在正则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式中添加它