我正在努力学习正则表达式,因为我离不开它们。
因此,这是一个不同维度模式的列表(对于销售产品):
那么,用什么模式来寻找各种维度?
例如,现在,我正在使用它来找到这种模式40x30x75,但它不起作用:
if(preg_match("#^[0-9][x][0-9][x][0-9]#", $dimension))
echo "ok"
你能帮帮我吗?
答案 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]*$