2014-11-22 31 views
0

我希望用户输入他们的用户名只能使用字母数字和点字符。 所以我写了一个正则表达式如下:2个正则表达式有什么区别?

'/([a-zA-Z0-9\.]+)/' 

但我想知道的是它与同:

'/([a-zA-Z0-9.]+)/' 

2以下的图案是一样的吗?谢谢你的帮助! :-)

+1

据我所知,这是相同的,因为你不必逃避一个点! – Rizier123 2014-11-22 10:41:39

+0

您不需要使用捕获组。 – 2014-11-22 11:00:04

回答

4

您不需要转义字符类中存在的点。在字符类中,点.和转义点\.与字面点匹配。所以这两个正则表达式都是一样的。

而且为了验证的目的,我建议你添加像'/^[a-zA-Z0-9.]+$/'这样的锚点。锚将用于做一个确切的字符串匹配。也就是说,/[a-zA-Z0-9.]+/正则表达式将匹配子foo在这个()foo输入字符串,但如果添加的开始和结束锚您正则表达式像/^[a-zA-Z0-9.]+$/,它甚至不会单个字符输入的字符串相匹配。它允许只匹配一个或多个字母数字或点的字符,如果发现比点或字母数字以外的字符,则正则表达式引擎将不匹配相应的字符串。

+0

正则表达式大师:D +1!非常好的回答 – Rizier123 2014-11-22 10:44:13

+0

谢谢,很好的答案! – Geany 2014-11-22 10:47:14

+0

@AvinashRaj我错了,认为答案是不正确的。我删除了downvote,我的错。 – Nerixel 2014-11-22 10:47:23

相关问题