我要求允许字段的字母数字和某些其他字符.我正在使用这个正则表达式:
"^[a-zA-Z0-9!@#$&()-`.+,/\"]*$".
Run Code Online (Sandbox Code Playgroud)
允许的特殊字符是! @ # $ & ( ) - ‘ . / + , “
但是当我用字符串"test_for_extended_alphanumeric"测试模式时,字符串通过了测试.我"_"不允许这种模式.我究竟做错了什么?
Mar*_*ers 23
你需要逃脱连字符:
"^[a-zA-Z0-9!@#$&()\\-`.+,/\"]*$"
Run Code Online (Sandbox Code Playgroud)
如果你没有逃避它,那么它意味着一系列的人物,比如a-z.
在您的字符类中,)-'被解释为一个范围,其方式与 例如 相同a-z,因此它指的是具有从 41)到 96的十进制 ASCII 代码的任何字符'。
由于_代码为 95,因此它在范围内,因此是允许的,如、<等。=>
为了避免这种情况,您可以转义-, ie \-,或者将 放在-字符类的开头或结尾:
/^[a-zA-Z0-9!@#$&()`.+,/"-]*$/
Run Code Online (Sandbox Code Playgroud)
无需转义",请注意,因为您使用的是*量词,所以空字符串也将通过测试。