0

我正在进行如下的 JQuery 验证:(我不太了解 jquery)..

我无法完成以下事情:

  1. 只允许使用字母 a 到 z(小写)、“-”(破折号或连字符)和“”(空格),
  2. 必须输入“-”(破折号)和“”(空格)字母,
  3. “-”或“”字母不能是输入的第一个或最后一个字母,
  4. “-”不能是“”的直接邻居或相邻(之前或之后),
  5. “-”或“”不能是其自身的直接邻居(相邻)。
  6. “电话”号码字段(4 位区号、一个空格、7 位本地代码)


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
  <script type="text/javascript" 
          src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
  </script>

  <script type="text/javascript" 
          src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js">
  </script>

  <script>
    $(document).ready(function(){
      $("#commentForm").validate({
        onfocusout: function(element) { $(element).valid(); } ,
        rules: {
            fullname : {
              required: true,
              maxlength: 14,
            },                  
            email: {
              required: true,
              email: true
            }
        },
        messages: {
            fullname : {
              required: "Please specify your Full Name",
              maxlength:  "Please enter only upto 14 characters",
            },
            email: {
              required: "We need your email address to contact you",
              email: "Your email address must be in the format of name@domain.com"
            }
        }
      });
   });

   </script>

  </head>

  <body>

    <form id="commentForm" method="get" action="">

       <fieldset>

       <p>
         <label for="fullname">Full Name</label>
         <em>*</em><input id="fullname" name="fullname" size="25" class="required"  maxlength="14" />
       </p>


       <p>
         <label for="email">E-Mail</label>
         <em>*</em><input id="email" name="email" size="25"  class="required email" />
       </p>

     </fieldset>

  </form>
  </body>
</html>

请有人帮助我实现这一目标..?

4

1 回答 1

0

使用正则表达式!!

  • 只允许使用字母 a 到 z(小写)、“-”(破折号或连字符)和“”(空格)

    !/[^a-z0-9 -]/.test(input)

  • 必须输入“-”(破折号)和“”(空格)字母,

    / /.test(input) && /-/.test(input)

  • “-”或“”字母不能是输入的第一个或最后一个字母,

    !/^[ |-]|[ |-]$/.test(input)

  • “-”不能是“”的直接邻居或相邻(之前或之后),

  • “-”或“”不能是其自身的直接邻居(相邻)。

    !/ -|- |--| /.test(input)

  • “电话”号码字段(4 位区号、一个空格、7 位本地代码)

    /^\d{4} \d{7}$/.test('1234 1234567')

如果满足条件,则每个表达式都返回 true,否则返回 false,像这样使用它:

var input = $('some-selector').value();
if(
  !/[^a-z0-9 -]/.test(input) &&
  / /.test(input) && /-/.test(input) &&
  !/^[ |-]|[ |-]$/.test(input) &&
  !/ -|- |--|  /.test(input) &&
  /^\d{4} \d{7}$/.test(input )
){
   //do something
}

更好的是,如果您正在格式化电话号码,请删除所有非数字字符,

input = input.replace(/[^0-9]/,'')

数一数(他们必须是 11)

input.length == 11

然后根据需要格式化它们。

于 2012-12-11T16:18:34.850 回答