我想要一个只允许字母,数字和特殊字符的正则表达式,但不允许使用数字,特殊字符和空格。我在下面使用这个表达式,但它不起作用。我该如何修理Iit?
"^(?=.*\\d)(?=.*[a-zA-Z]).{4,10}$"
例如::
Abc!@#111 - 接受
qwerty - 接受
111 - 不要接受 @#$ - 别接受
答案 0 :(得分:2)
在你的正则表达式中,字母和数字都是必需的。因此,它不匹配qwerty
。
看来你只想确保至少有一个字母。
如果您计划仅使用服务器端验证,则可以使用允许Unicode字母类\P{L}
表示非字母的.NET正则表:
^(?!\P{L}*$)\S{4,10}$
可以声明为@"^(?!\P{L}*$).{4,10}$"
。
请参阅demo
如果您需要在客户端或客户端和服务器端验证字符串,则需要JS兼容版本(但它不支持Unicode):
^(?![^A-Za-z]*$)\S{4,10}$
要检查是否存在numbres或特殊字符,我们可以使用需要至少使用一个字母的预见(?!\P{L}*$)
。