a-z-A-Z在正则表达式中的含义是什么?

时间:2015-05-09 20:12:11

标签: regex go

我一直在使用别人的代码,我遇到了正则表达式[^0-9a-z-A-Z]。这与公共[^0-9a-zA-Z]非常相似,后者用于排除非字母数字字符,但请注意中间的额外短划线,位于小写z和大写A之间。

我对正则表达式并不是很熟悉,但我现在已经阅读了几个页面,而且我看到的所有规则都没有涵盖这种语法的含义。也许它甚至不是有效的语法,但Golang正则表达式解释器似乎并不介意。我很感激任何澄清。感谢。

2 个答案:

答案 0 :(得分:52)

在无法将其解释为范围的位置的字符类中的破折号被解释为文字破折号。因此,表达式将字符0排除为9azAZ-。这就是为什么没有语法错误。

但这可能是一个错字。如果破折号应该在那里,那么为了防止混淆,它应该从范围之间转义和/或移出,例如[^0-9a-zA-Z\-]

答案 1 :(得分:0)

它排除了减号。

您可以在此处轻松测试正则表达式:http://www.regexr.com/