我对正则表达式了解不多,所以我找到了一些并尝试使用它。
为什么我的此正则表达式出现此错误:
warning: character class has '-' without escape: /[a-zA-Z0-9-._ ]/
这里有什么问题?
验证应该只有字母,数字和" - " ,"。" ," _"," " (空格)
答案 0 :(得分:15)
示例 [a-z]
的正则表达式中的连字符特殊含义表示a到z字符。
如果您想匹配-
,则应该转义或者结束(或开始)上课。
[a-zA-Z0-9._ -]
OR
[-a-zA-Z0-9-._ ]
OR
[a-zA-Z0-9\-._ ]
答案 1 :(得分:3)
在字符类中,连字符具有特殊含义。您可以将连字符作为类的第一个或最后一个字符。在某些正则表达式实现中,您也可以直接放在范围之后。如果你将连字符放在任何其他地方,你需要将它转义为你的类。
[-a-zA-Z0-9._ ]
答案 2 :(得分:2)
如果将-
置于字符类中,则需要对其进行转义,因为它在字符类中具有特殊含义( range )。或者你可以将-
放在char类的开头或结尾。如果你喜欢这样,它就不需要在字符类中转义-
符号。