我一直在使用别人的代码,我遇到了正则表达式[^0-9a-z-A-Z]
。这与公共[^0-9a-zA-Z]
非常相似,后者用于排除非字母数字字符,但请注意中间的额外短划线,位于小写z
和大写A
之间。
我对正则表达式并不是很熟悉,但我现在已经阅读了几个页面,而且我看到的所有规则都没有涵盖这种语法的含义。也许它甚至不是有效的语法,但Golang正则表达式解释器似乎并不介意。我很感激任何澄清。感谢。
答案 0 :(得分:52)
在无法将其解释为范围的位置的字符类中的破折号被解释为文字破折号。因此,表达式将字符0
排除为9
,a
至z
,A
至Z
和-
。这就是为什么没有语法错误。
但这可能是一个错字。如果破折号应该在那里,那么为了防止混淆,它应该从范围之间转义和/或移出,例如[^0-9a-zA-Z\-]
答案 1 :(得分:0)
它排除了减号。
您可以在此处轻松测试正则表达式:http://www.regexr.com/