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


What is the difference between 2 regex patterns?

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

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

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

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

2 以下模式是否相同?谢谢你的帮助!:-)

您不需要转义字符类中存在的点。 在字符类中,点.和转义点'.与文字点匹配。所以两个正则表达式是相同的。

并且出于验证目的,我建议您添加像 '/^[a-zA-Z0-9.]+$/' 这样的锚点。锚点将用于执行精确的字符串匹配。也就是说,/[a-zA-Z0-9.]+/正则表达式会匹配这个()foo输入字符串中的子字符串foo,但是如果你像/^[a-zA-Z0-9.]+$/一样向正则表达式添加开始和结束锚点,它甚至不会匹配上面提到的字符串中的一个字符。它只允许匹配一个或多个字母数字或点字符,如果它找到点或字母数字以外的字符,则正则表达式引擎将不匹配相应的字符串。