正则表达式匹配xxx.xxx.xxx?

时间:2012-07-11 11:12:27

标签: php regex

我需要检查preg_match的输入,它必须是以下格式:xxx.xxx.xxx 块的数量可以变化......这些都是有效输入的例子:

001
00a.00a
0fg.001
aaa.aaa.001
001.001.002.001.001.001

好吧,我可能会写一个正则表达式:

^([\da-z]{3}\.?)+$

但是这里出现了期间量词的问题。我的意思是如果我使用'?'匹配0或1次,即使在某处跳过点也会匹配,例如:

000.001.0010az001

然后,如果我使用{1}匹配一次,它将不匹配,因为最后一个块没有点。

所以我想不出怎么想......请建议

2 个答案:

答案 0 :(得分:4)

您可以使用:

^[\da-z]{3}(?:\.[\da-z]{3})*$

答案 1 :(得分:0)

/^(?:[\da-z]{3}\.)*[\da-z]{3}$/