$.validator.addMethod('AZ09_', function (value) {
return /^[a-zA-Z0-9.-_]+$/.test(value);
}, 'Only letters, numbers, and _-. are allowed');
当我使用类似于test-123
这样的字符时,它仍然会触发无效连字符的提示。我尝试过\-
和--
$.validator.addMethod('AZ09_', function (value) {
return /^[a-zA-Z0-9.-_]+$/.test(value);
}, 'Only letters, numbers, and _-. are allowed');
当我使用类似于test-123
这样的字符时,它仍然会触发无效连字符的提示。我尝试过\-
和--
使用 \-
进行转义应该没问题,但你也可以尝试将其放在字符集的开头或结尾。这样对你有用:
使用 \-
进行转义应该没问题,但你也可以尝试将其放在字符集的开头或结尾。这样对你有用:
/^[a-zA-Z0-9._-]+$/
[0-9]
)。 - Matt使用 \-
转义连字符是正确的方式。
我已验证表达式 /^[a-zA-Z0-9.\-_]+$/
允许使用连字符。您也可以使用 \w
类来缩短它为 /^[\w.\-]+$/
。
(在表达式中将连字符放在最后实际上会导致它不需要转义,因为它不能成为范围的一部分,然而您可能仍然希望养成始终转义的习惯。)
-
)时,重要的是要注意转义(\-
)和不转义(-
)连字符之间的区别,因为除了作为字符本身外,连字符还被解析为指定正则表达式范围的符号。\-
),正则表达式只会匹配连字符,例如:/^[+\-.]+$/
在第二种情况下,不需要转义,例如:/^[+-.]+$/
,因为连字符位于加号和句点之间,所以它将匹配ASCII值在43(加号)和46(句点)之间的所有字符,因此会包括逗号(44的ASCII值)作为副作用。也许出现问题是因为您向服务器传递了一个字符串,没有正确转义其中的字符。如果是这种情况,您应该首先转义\,以便服务器端程序也能够处理它。
或者您可以将其简单地放在[]方括号的末尾。
@"\"
代替"\\"
)。 - MarredCheese\-
就可以解决问题,但在验证中似乎需要双重转义,即转义转义的反斜杠:\\-
2023年12月7日更新:必须对正则表达式保留字符进行双重转义似乎与使用JS编译器(在我的情况下是Ember-cli)有关。在CodePen中,单个转义字符运行良好。
希望这对某人有所帮助。