PHP简单的PCRE正则表达式只允许1个点或没有?

时间:2010-12-31 17:23:57

标签: php regex pcre

我正在尝试为别名验证创建一个正则表达式:

我允许字母,数字和1点。

我做了以下事情:

/^[a-z0-9\\.]+$/i

然而它允许多于1个点?

3 个答案:

答案 0 :(得分:6)

这应该这样做:

/^(?:\.[a-z0-9]+|[a-z0-9]+(?:\.[a-z0-9]*)?)$/i

这允许字符串:

  • 以一个点开头,后跟至少一个字母数字字符,或
  • 以一个或多个字母数字字符开头,后跟一个点和零个或多个字母数字字符。

答案 1 :(得分:0)

试试这个:

^(?:[a-z0-9]+\.?[a-z0-9]*|[a-z0-9]*\.?[a-z0-9]+)$

将点放在中心,然后允许它在任何一侧被包围。

答案 2 :(得分:0)

在这种情况下,我认为允许点作为第一个或最后一个字符不是一个好主意:

/^[a-z0-9]+\.?[a-z0-9]+$/i