我有一个正则表达式:
/^([a-zA-Z0-9_ -.''""]+)$/
Run Code Online (Sandbox Code Playgroud)
它工作得很好,允许字母,数字和一些特殊字符,如-,.,'和".
不,我希望它也允许冒号(:).我尝试了以下正则表达式,但它失败了 - 它开始允许许多其他特殊字符.
/^([a-zA-Z0-9_ :-.''""]+)$/
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
-在字符类中有特殊含义,就像在a-z.试试这个:
/^([a-zA-Z0-9_ :\-.'"]+)$/
Run Code Online (Sandbox Code Playgroud)
-.(空间点)允许一些额外的字符,如#,$和更多.如果这是故意的,请尝试:
/^([a-zA-Z0-9_ -.'":]+)$/
Run Code Online (Sandbox Code Playgroud)
此外,要知道你不必多次包含任何角色,这是毫无意义的.'并且"每次出现两次,它们可以安全地被移除.
顺便说一下,在字符表中的点后面出现一个冒号,表示正则表达式无效.它不应该允许额外的字符,你可能会得到一个错误.在Firefox中,你得到:.invalid range in character class
您可以使用:
/^([a-zA-Z0-9_ :.'"-]+)$/
Run Code Online (Sandbox Code Playgroud)
我已经移动-到字符类的末尾,因此它按字面处理而不是作为范围运算符.您的原始正则表达式中也存在同样的问题,其中-被视为范围运算符.
此外,我已经下降了冗余'和"来自焦炭类.
| 归档时间: |
|
| 查看次数: |
7369 次 |
| 最近记录: |