js 对表单的一些验证及正则匹配

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 对表单的一些验证及正则匹配相关的知识,希望对你有一定的参考价值。

利用的是jq的validate.js

详见菜鸟教程http://www.runoob.com/jquery/jquery-plugin-validate.html

以下是我测试的几个文件,就是理解后修改的菜鸟教程上的例子,具体还没实际用在工程中,一些防sql注入,防xss攻击等未实现,但是功能完备

validate.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <load href="__PUBLIC__/js/jquery.min.js" />
    <load href="__PUBLIC__/assets/Regular/regular.js" />
    <load href="__PUBLIC__/assets/js/jquery.validate.min.js" />
    <load href="__PUBLIC__/assets/Regular/regular.css" />
    <title></title>
</head>
<body>
<form class="cmxform" id="signupForm" method="get" action="">
  <fieldset>
    <legend>验证完整的表单</legend>
    <p>
      <label for="firstname">名字</label>
      <input id="firstname" name="firstname" type="text">
    </p>
    <p>
      <label for="lastname">姓氏</label>
      <input id="lastname" name="lastname" type="text">
    </p>
    <p>
      <label for="username">用户名</label>
      <input id="username" name="username" type="text">
    </p>
    <p>
      <label for="password">密码</label>
      <input id="password" name="password" type="password">
    </p>
    <p>
      <label for="confirm_password">验证密码</label>
      <input id="confirm_password" name="confirm_password" type="password">
    </p>
    <p>
      <label for="email">Email</label>
      <input id="email" name="email" type="email">
    </p>
     <p>
      <label for="telephone">Tel</label>
      <input id="telephone" name="telephone" type="telephone">
    </p>
    <p>
      <label for="agree">请同意我们的声明</label>
      <input type="checkbox" class="checkbox" id="agree" name="agree">
    </p>
    <p>
      <label for="newsletter">我乐意接收新信息</label>
      <input type="checkbox" class="checkbox" id="newsletter" name="newsletter">
    </p>
    <fieldset id="newsletter_topics">
      <legend>主题 (至少选择两个) - 注意:如果没有勾选“我乐意接收新信息”以下选项会隐藏,但我们这里作为演示让它可见</legend>
      <label for="topic_marketflash">
        <input type="checkbox" id="topic_marketflash" value="marketflash" name="topic">Marketflash
      </label>
      <label for="topic_fuzz">
        <input type="checkbox" id="topic_fuzz" value="fuzz" name="topic">Latest fuzz
      </label>
      <label for="topic_digester">
        <input type="checkbox" id="topic_digester" value="digester" name="topic">Mailing list digester
      </label>
      <label for="topic" class="error">Please select at least two topics you‘d like to receive.</label>
    </fieldset>
    <p>
      <input class="submit" type="submit" value="提交">
    </p>
  </fieldset>
</form>
</body>
</html>
<script type="text/javascript">
$().ready(function() {
    checkInputs($("#signupForm"));
})
</script>

regular.js

/**
*js 每个页面的input验证
*注意:本js使用时,要和jquery,jquery.validate一起引入,rules下的参数如firstname要和form表单中的<input name=‘firstname‘>一致,详细可参见validate.html
*author betty 
*email  [email protected]
*Date   2017/06/13
*Time   16:31
*/

//检查登录表单

//检查新建表单
function checkCreateInputs(formobj) {
    formobj.validate({
        // debug:true,
        rules: {
          firstname: "required",
          lastname: "required",
          username: {               //用户名
            required: true,
            minlength: 2
          },
          password: {               //密码
            required: true,
            minlength: 6
          },
          confirm_password: {
            required: true,
            minlength: 6,
            equalTo: "#password"
          },
          email: {                  //邮箱
            // required: true,
            email: true
          },
          topic: {
            required: "#newsletter:checked",
            minlength: 2
          },
          mobilephone: {            //手机
            mobilephone: true
          },
          telephone: {              //座机
            telephone: true
          },
          agree: "required"
        },
        messages: {
          firstname: "请输入您的名字",
          lastname: "请输入您的姓氏",
          username: {
            required: "请输入用户名",
            minlength: "用户名必需由两个字母组成"
          },
          password: {
            required: "请输入密码",
            minlength: "密码长度不能小于 5 个字母"
          },
          confirm_password: {
            required: "请输入密码",
            minlength: "密码长度不能小于 5 个字母",
            equalTo: "两次密码输入不一致"
          },
          email: "请输入一个正确的邮箱",
          agree: "请接受我们的声明",
          topic: "请选择两个主题",
        },
        success: "valid"   //验证成功后作出的显示,我选择的是显示打钩的图片
    })
  //自己添加的正则匹配规则 jQuery.validator.addMethod(
"mobilephone", function(value, element) { var tel = /^1[3458]\d{9}$/; return this.optional(element) || (tel.test(value)); }, "请正确填写您的手机号码"); jQuery.validator.addMethod("telephone", function(value, element) { var tel = /^([0-9]{3,4}-)?[0-9]{7,8}$/; return this.optional(element) || (tel.test(value)); }, "请正确填写您的座机号码"); }
//验证输入框
function checkSearchInputs(searchform){ searchform.validate({ rules: { search : { search : true } } }) jQuery.validator.addMethod("search", function(value, element) { var tel = /select|insert|and|or|update|delete|\‘|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile/i; return this.optional(element) || (tel.test(value)); }, ""); }

regular.css

input.error { border: 1px solid red; }
label.error {
    background:url("unchecked.png") no-repeat 1px 4px;  //同目录下的图片
    padding-left: 20px;
    padding-bottom: 2px;
    font-weight: bold;
    color: #EA5200;
}
label.valid {
    background:url("checked.png") no-repeat 1px 4px;
}

 



以上是关于js 对表单的一些验证及正则匹配的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式表单验证实例代码详解

Ajax和PHP正则表达式验证表单及验证码

JS之正则表达式

js电话号码验证的正则表达式?

js常见正则表达式验证及方法

正则表达式对手机号的验证^[1][3-8]+\\d9