在正则expression式字符括号中包含连字符?

$.validator.addMethod('AZ09_', function (value) { return /^[a-zA-Z0-9.-_]+$/.test(value); }, 'Only letters, numbers, and _-. are allowed'); 

当我使用类似test-123东西时,它仍然会触发,就像连字符是无效的。 我试过\---

使用\-转义应该没问题,但你也可以尝试把它放在字符类的开头或结尾。 这应该为你工作:

 /^[a-zA-Z0-9._-]+$/ 

使用\-转义连字符是正确的方法。

我已经validation了expression/^[a-zA-Z0-9.\-_]+$/确实允许使用连字符。 您也可以使用\w类将其缩短为/^[\w.\-]+$/

(将连字符放在expression式中实际上导致它不需要转义,因为它不能作为范围的一部分,但是您可能仍然想要避免这种习惯。)

\-应该努力逃避-在字符范围内。 你可以引用你testing时似乎没有? 因为它似乎工作: http : //jsbin.com/odita3

\ – 也许是不工作,因为你用一个string从服务器传递了整个东西。 如果是这样的话,你应该首先逃避\所以服务器端程序也可以处理它。

  • 在服务器端的string:\\ –
  • 在客户端:\ –
  • 在正则expression式(封面)中: –

或者你可以简单地放在[]括号中。

匹配连字符的更一般的方式是使用连字符和破折号的字符类(“\ p {Pd}”不带引号)。 如果您正在处理来自不同文化和来源的文本,您可能会发现有更多types的连字符,而不只是一个字符。 您可以在[]expression式中添加它