0

我正在使用 Jquery 验证器创建一个规则来禁止字段中的 spl 字符。

jQuery.validator.addMethod("noSpecialChar", function(value,element) {
    if(value.match(/[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]/)){
      return false;
    }else{
      return true;
    }
  }, "No Special Charaters are allowed.");

正在使用的正则表达式未捕获“\”反斜杠。

有人可以帮我吗?

4

2 回答 2

3

您需要在字符类中包含反斜杠:

if(value.match(/[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/\\]/))

但是其他“特殊字符”§呢?该列表几乎是无穷无尽的 - 也许您希望排除除以下之外的所有字符A-Za-z0-9_

if (value.match(/\W/))
于 2013-01-29T07:07:48.127 回答
0

反斜杠\是转义字符,因此要在正则表达式(或字符串)中包含文字反斜杠,您必须转义反斜杠字符本身,即\\.

在您的角色类中,单曲\被用来转义,]以防止它被解释为关闭角色类的元字符。

\角色类中的另一个是不必要的,因为它]是唯一需要在其中转义的元字符。
], \,^-是唯一可能需要在字符类中转义的字符。

如前所述,您最好通过查找不在指定组内的字符来指定不允许使用的字符,例如

/[^a-z\d\s]/i

它不允许任何字符 not a-z, A-Z,0-9或空格( the\d的缩写,0-9表示i不区分大小写)。

此外,代替if-else语句 and match,您可以简单地使用

return !value.test( /[^a-z\d\s]/i )

尽管您可能会发现它的可读性较差(!反转调用的布尔结果test)。

于 2013-01-29T11:37:36.727 回答