2013-08-26 29 views
5

我擁有包含電話號碼和需要捕獲的多個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); 

有沒有更好的辦法去做這個?

+2

小心地問在stackoverflow上的正則表達式問題。由正則表達式巨魔自動downvoting。我看到有人已經給你一個downvote。但是你的問題完全有效。 –

+1

更好?你有什麼問題? – 2013-08-26 04:11:45

+1

你能給出一個「多個6位數字」的例子嗎?或者您的語言環境中電話號碼的格式是什麼? – jerdiggity

回答

2

這是一個有點難以審查的正則表達式,而不樣本輸入,但一些觀察:

  • [0-9]可以\d(因爲,你已經在最後使用它)

  • 被替換
  • [\D]\D完全相同。這是一個角色類本身,除非你有更多的角色來包含它沒有被包含在[]中。

  • (?:,)應該簡單地,因爲你沒有想捕捉它也不具有任何量詞

  • ,\[\W_]在這裏它似乎你想使用字符類,但\將逃脫第一[。如果你真的需要一個文字\那裏;您需要將其轉義爲\\,因爲它是一個特殊字符。

+0

感謝提示 – user61629