我擁有包含電話號碼和需要捕獲的多個6位數字的自由文本塊。 6位數字有一個可選的','。 6位數字的正則表達式匹配具有電話號碼的文本中的6個數字的字符串
例子可能是123456或123456,但我需要從一個電話號碼來區分樣1 234 456 8901
我:
preg_match_all(",\[\W_][0-9]{3}(?:,)[0-9]{3}[\W_][\D]\d",$html, $value);
有沒有更好的辦法去做這個?
我擁有包含電話號碼和需要捕獲的多個6位數字的自由文本塊。 6位數字有一個可選的','。 6位數字的正則表達式匹配具有電話號碼的文本中的6個數字的字符串
例子可能是123456或123456,但我需要從一個電話號碼來區分樣1 234 456 8901
我:
preg_match_all(",\[\W_][0-9]{3}(?:,)[0-9]{3}[\W_][\D]\d",$html, $value);
有沒有更好的辦法去做這個?
這是一個有點難以審查的正則表達式,而不樣本輸入,但一些觀察:
[0-9]
可以\d
(因爲,你已經在最後使用它)
[\D]
與\D
完全相同。這是一個角色類本身,除非你有更多的角色來包含它沒有被包含在[]
中。
(?:,)
應該簡單地,
因爲你沒有想捕捉它也不具有任何量詞。
,\[\W_]
在這裏它似乎你想使用字符類,但\
將逃脫第一[
。如果你真的需要一個文字\
那裏;您需要將其轉義爲\\
,因爲它是一個特殊字符。
感謝提示 – user61629
小心地問在stackoverflow上的正則表達式問題。由正則表達式巨魔自動downvoting。我看到有人已經給你一個downvote。但是你的問題完全有效。 –
更好?你有什麼問題? – 2013-08-26 04:11:45
你能給出一個「多個6位數字」的例子嗎?或者您的語言環境中電話號碼的格式是什麼? – jerdiggity