什么正则表达式?

时间:2011-08-04 10:07:11

标签: php regex preg-match

我正在努力学习正则表达式,因为我离不开它们。

因此,这是一个不同维度模式的列表(对于销售产品):

  • 40x30x75
  • 46x38x23-27
  • Ø30H30
  • Ø25-18H27

那么,用什么模式来寻找各种维度?

例如,现在,我正在使用它来找到这种模式40x30x75,但它不起作用:

if(preg_match("#^[0-9][x][0-9][x][0-9]#", $dimension))
   echo "ok"

你能帮帮我吗?

4 个答案:

答案 0 :(得分:1)

你的正则表达式应该是:

^[0-9]{2}x[0-9]{2}x[0-9]{2}$

[0-9]表示一个介于0到9之间的单个字符。因此,您需要使用其中的两个字符,或使用像{2}这样的量词。您可以使用[0-9]代替\d,而不是^\d\dx\d\dx\d\d$ 。所以,你可以写一下:

{{1}}

提示:如果您不能没有正则表达式,想要学习并享受更轻松的生活,我建议您获得RegexBuddy。我刚刚开始为自己买了它,它帮助我很多

答案 1 :(得分:1)

您的正则表达式缺少量词,在相关字符类后面添加+符号,以表示您正在寻找一个或多个匹配项:

if(preg_match("#^[0-9]+x[0-9]+x[0-9]+#", $dimension))
   echo "ok"

默认情况下,它只查找该类的一个字符。单个字符不需要字符类(尽管它没有错)。请参阅上面示例中的x

答案 2 :(得分:1)

尝试以下正则表达式:

(^[0-9]+x[0-9]+x[0-9]+$)|(^[0-9]+x[0-9]+x[0-9]+-[0-9]+$)|(^Ø[0-9]+H[0-9]+$)|(^Ø[0-9]+-[0-9]+H[0-9]+$)

所以:

if (preg_match("/(^[0-9]+x[0-9]+x[0-9]+$)|(^[0-9]+x[0-9]+x[0-9]+-[0-9]+$)|(^Ø[0-9]+H[0-9]+$)|(^Ø[0-9]+-[0-9]+H[0-9]+$)/", $dimension))
   echo "ok";

它可能会被简化得更多,也许有人会想要这样做?

顺便说一下,你知道一个名为RegExr的网站,它允许你测试你的常规经历,每当我使用正则表达式时它对我都非常有用。

答案 3 :(得分:0)

这将验证前两个:

^[0-9]+x[0-9]+x[0-9]+-?[0-9]*$