例如重複的數據,我有下一個字符串:的preg_match的字符串與它
2556974513||1025635214|1236521025|0124576832
在字符串中必須是10
位數然後|
和這個公式可以重複n
次,如何匹配嗎?
也許有這樣做,比這一個最簡單的方法:
preg_match('/^[\d]{10}|[\d]{10}| ... [\d]{10}$/', $string);
感謝。
例如重複的數據,我有下一個字符串:的preg_match的字符串與它
2556974513||1025635214|1236521025|0124576832
在字符串中必須是10
位數然後|
和這個公式可以重複n
次,如何匹配嗎?
也許有這樣做,比這一個最簡單的方法:
preg_match('/^[\d]{10}|[\d]{10}| ... [\d]{10}$/', $string);
感謝。
你會想是這樣的:
^(?:\d{10}\|)+\d{10}$
的\d{10}
末是有,因爲有結尾沒有|
字符。 +
將匹配一個或多個前面的模式。如果只有一組10位數字是有效的,則將+
替換爲*
,這將匹配零次或多次。
請注意,|
字符需要轉義,因爲它在正則表達式中用作OR運算符。
這意味着「一個或一個以上的(10位然後通過管道)」:
(\d{10}\|)+
編輯:這不是從你的問題清楚,如果尾礦管道將在那裏與否。如果沒有,那麼:
(\d{10}\|)*(\d{10})
另外,如果你總有需要提取值,你可能也只是做:
foreach (explode('|', $string) as $value) {
if (preg_match('/^\d{10}$/', $value)) {
...
}
}
謝謝,非常有用 – John
感謝,但重複的數量是動態的,在這種情況下,我有以爆炸字符串,然後每次計算重複次數。 preg_match是否有自己計算重複次數的方法? – John
@John:^(?:\ d {10} \ |)* \ d {10} $ - 你可能想要讀懂正則表達式,你問的問題很簡單。 – GaretJax
@John - 啊我誤解了這個問題,編輯了我的答案,以便它可以匹配任意數量的重複。如果有一組10位數字(即'2556974513'應該匹配)是有效的,則用'*'替換正則表達式中的'+',匹配0或更多次。 –