我正在尝试使用jQuery验证邮政编码字段,但是它不起作用。

这是我的代码:

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

这是html:
PostCode<br /><input id="postcod" type="text" value="" name="postcod" />

你能帮忙吗

最佳答案

有几个问题...

除非您需要通过其构造函数创建RegExp对象,否则JavaScript中不会引用

  • 正则表达式。在这种情况下,您不需要。仅在需要连接外部字符串时才使用它们。虽然您可以将字符串传递给match()并进行隐式转换,但建议不要将其传递给RegExp文字。
  • 您需要使用/作为正则表达式文字中的分隔符。使用RegExp时,您不会传递任何定界符。因此,~永远都不正确。也许您在考虑PHP。
  • 虽然没有必要,但是您的某些正则表达式可能会得到改进。 {1}量词是隐式的,并且[0-9]字符类可以替换为\d
  • 而不是使用空块和else,只需使用bang运算符(!)否定条件。

  • 这是我可能会使用的方式...
    if ( ! postcod.val().match(/^([1-9]\d{3}\s[A-Z]{2})$/)){
       ...
    }
    

    07-24 09:51