$.validator.addMethod('AZ09_', function (value) {
return /^[a-zA-Z0-9.-_]+$/.test(value);
}, 'Only letters, numbers, and _-. are allowed');
当我使用
test-123
之类的东西时,它仍然会触发,好像连字符无效。我尝试了\-
和--
#1 楼
使用\-
转义应该没问题,但是您也可以尝试将其放在字符类的开头或结尾。这应该为您工作:/^[a-zA-Z0-9._-]+$/
评论
连字符的最后放置不适用于某些Microsoft工具,例如Microsoft SQL Server Management Studio。转义连字符确实有效。
–罗斯压机
15年6月8日在17:04
@SabaAhang,因为如果它在开头或结尾,则不能在其他两个字符之间创建一个字符范围(例如[0-9])
–马修
16年7月7日在14:54
@SabaAhang以下文档页面提到连字符可以在字符括号的开头或结尾进行转义:regular-expressions.info/charclass.html
– AbstractVoid
17年1月23日在13:11
#2 楼
使用\-
转义连字符是正确的方法。我已验证表达式
/^[a-zA-Z0-9.\-_]+$/
确实允许连字符。您还可以使用\w
类将其缩短为/^[\w.\-]+$/
。您可能仍想养成始终逃避的习惯。)评论
非常好。 :D虽然我更喜欢可读性(但是我想\ w对于某些专家来说会很容易)
–ParoX
2010-09-13 0:18
连字符的最后放置不适用于某些Microsoft工具,例如Microsoft SQL Server Management Studio。转义连字符确实有效。
–罗斯压机
15年6月8日在17:04
#3 楼
\-可能不起作用,因为您使用字符串从服务器传递了全部内容。如果是这种情况,首先应该转义\,以便服务器端程序也可以处理它。在服务器端字符串中:\\-
在客户端上边:\-
在正则表达式中(覆盖):-
或者您可以简单地将[]括号中的和放在
。
评论
我需要在服务器端使用C#。有效。谢谢。
– Topman
6月4日1:22
@Topman更好(对于C#),对服务器端正则表达式,文件名等使用逐字字符串文字,以避免混淆(@“ \”代替“ \\”)。
– MarredCheese
12月2日,22:24
#4 楼
\-
应该可以在字符范围内转义-
。您可以引用似乎没有的测试内容吗?因为它似乎有效:http://jsbin.com/odita3 #5 楼
通常,在正则表达式中使用连字符(-
)字符,重要的是要注意转义(\-
)和不转义(-
)之间的区别,因为连字符除了本身是字符之外,还被解析为在regex中指定范围。In the first case
,带有转义连字符(\-
),正则表达式将仅与连字符匹配,如示例/^[+\-.]+$/
In the second case
,在此不转义例如/^[+-.]+$/
,因为连字符位于加号和点之间,因此它将匹配所有ASCII值在43(加号)和46(对于点)之间的字符,因此将包括逗号(ASCII值为44)作为副作用。
评论
我的问题是我实际上使用的是AZ09方法,而不是AZ09 _ .. gr