例如我有下一个字符串:
2556974513|0123254852|1025635214|1236521025|0124576832
字符串中的必须是10
位,然后是|
,此公式可能会重复n
次,如何匹配?
也许最简单的方法就是这样做:
preg_match('/^[\d]{10}|[\d]{10}| ... [\d]{10}$/', $string);
感谢。
答案 0 :(得分:3)
你会想要这样的东西:
^(?:\d{10}\|)+\d{10}$
最后的\d{10}
就在那里,因为最后没有|
个字符。 +
将匹配前一个模式中的一个或多个。如果仅匹配一组10位数字有效,则将+
替换为*
,这将匹配零次或多次。
请注意,|
字符需要进行转义,因为它在regex中用作OR运算符。
答案 1 :(得分:1)
这意味着“一个或多个(10位数,然后管道)”:
(\d{10}\|)+
编辑:从您的问题中不清楚拖尾管是否存在。如果没有,那么:
(\d{10}\|)*(\d{10})
此外,如果您还需要提取值,您也可以这样做:
foreach (explode('|', $string) as $value) {
if (preg_match('/^\d{10}$/', $value)) {
...
}
}