2个正则表达式有什么区别?

时间:2014-11-22 10:39:06

标签: php regex

我希望用户只输入字母数字和点字符来输入用户名。 所以我写了一个正则表达式模式如下:

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

但我想知道它是否与以下相同:

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

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

1 个答案:

答案 0 :(得分:4)

您不需要逃避字符类中存在的点。在字符类中,点.和转义点\.与文字点匹配。因此两个正则表达式都相同。

而且出于验证目的,我建议您添加'/^[a-zA-Z0-9.]+$/'之类的锚点。 Anchor将用于进行精确的字符串匹配。也就是说,/[a-zA-Z0-9.]+/正则表达式会与此foo输入字符串中的子字符串()foo匹配,但如果您将开始和结束锚点添加到正则表达式/^[a-zA-Z0-9.]+$/,则会赢得&#39}。 t匹配上面提到的字符串中的单个字符。它只允许匹配一个或多个字母数字或点字符,如果找到的字符不是点或字母数字,则正则表达式引擎不会匹配相应的字符串。