我正在尝试搜索与模式中给出的正则表达式匹配的主题,但它无法正常工作。 我想匹配一个数字/ 10然后一个邮政编码
例如,如果字符串是“hello 3/10 HU2”,我希望preg_match函数匹配3和邮政编码,它需要按顺序
奇怪的是,当我以相反的顺序尝试preg_match所以HU2 3/10它可以工作但是当我改变它周围的代码时它不会识别值3.
任何帮助将不胜感激
下面的代码适用于订单HU2 3/10,但我需要它以相反的顺序
<?php
preg_match('/([A-Za-z]{1,2}[0-9][A-Za-z0-9]?) ([0-9]{1,2})/', "HU2 3/10", $matches);
echo $matches[1];
echo "<br>";
echo $matches[2];
?>
答案 0 :(得分:1)
如果您更改它,则必须在模式中包含/10
。请注意,您可以更改分隔符,以便不必转义正斜杠:
preg_match('~([0-9]{1,2})/10 ([A-Za-z]{1,2}[0-9][A-Za-z0-9]?)~', "3/10 HU2", $matches);
[0-9]
可以替换为\d
。另外,如果10
是一个可变数字,那么也很容易考虑到这一点:
preg_match('~(\d{1,2})/\d+ ([A-Za-z]{1,2}\d[A-Za-z0-9]?)~', "3/10 HU2", $matches);
作为最后的优化,使用i
修饰符,让你省略一半的字母(它使图案不区分大小写):
preg_match('~(\d{1,2})/\d+ ([A-Z]{1,2}\d[A-Z0-9]?)~i', "3/10 HU2", $matches);
答案 1 :(得分:1)
你不匹配/ 10,是吗?
(\d{1,2})/10 ([A-Za-z]{1,2}\d\w?)
匹配
你好3/10 HU2
组1:3
第2组:HU2
答案 2 :(得分:0)
这是我用各种字符串尝试的正则表达式,似乎有效:
Regex: ([^ ]+) *(\d*\/10) *([A-Za-z0-9]+) *(.*)
Test strings:
1) hello 3/10 HU2
2) test this regex 3/10 HU2 param1 param2
3) testid 33323/10 HU2332GG param1 param2
我对所有要求都不太确定,但这可能是你的正则表达式的基础。您还可以使用在线正则表达式工具在此处快速验证您的正则表达式: http://www.regexplanet.com/advanced/java/index.html