jQuery邮政编码验证不起作用

Mar*_*ary 4 javascript regex jquery

我试图使用jQuery验证邮政编码字段,但它不起作用.

这是我的代码:

if (postcod.val().match ('~^([1-9]{1}[0-9]{3}\s[A-Z]{2})$~')){
         }else{
            postcod.addClass("needsfilled");
            postcod.val(postcoderror);
        }
Run Code Online (Sandbox Code Playgroud)

这是html:

PostCode<br /><input id="postcod" type="text" value="" name="postcod" />
Run Code Online (Sandbox Code Playgroud)

你能帮忙吗?

ale*_*lex 7

有几个问题......

  • 除非您需要通过构造函数创建对象,否则不会在JavaScript中引用正则表达式RegExp.在这种情况下,你没有.如果我需要连接外部字符串,我只使用它们.虽然你可以传递一个字符串match(),它将被隐式转换,但不建议传递一个RegExp文字.
  • 您需要/在正则表达式文字中用作分隔符.使用时RegExp,您不会传递任何分隔符.所以~永远不正确.也许你在想PHP.
  • 虽然没有必要,但你的一些正则表达式可以得到改善.的{1}量词是隐式的,并且[0-9]字符类可以被取代\d.
  • 而不是有一个空块和一个else,只是用bang运算符(!)否定条件.

这是我如何使用它...

if ( ! postcod.val().match(/^([1-9]\d{3}\s[A-Z]{2})$/)){
   ...
}
Run Code Online (Sandbox Code Playgroud)