正则表达式模式从文本中提取特定数字

时间:2012-05-03 13:32:33

标签: php regex preg-match-all

我正在尝试使用preg_match_all()函数从php中的字符串中提取电话号码。我知道这种模式'!\d+!'提取所有数字。但我需要它做更多。 我要提取的数字要么以256开头,后跟9个数字,要么是078,077,071,079,后跟8个数字。 谢谢。

3 个答案:

答案 0 :(得分:5)

试试这个:

\b(?:256\d{9}|07[17-9]\d{8})\b

<强>解释

<!--
\b(?:256\d{9}|07[17-9]\d{8})\b

Options: ^ and $ match at line breaks; free-spacing

Assert position at a word boundary «\b»
Match the regular expression below «(?:256\d{9}|07[17-9]\d{8})»
   Match either the regular expression below (attempting the next alternative only if this one fails) «256\d{9}»
      Match the characters “256” literally «256»
      Match a single digit 0..9 «\d{9}»
         Exactly 9 times «{9}»
   Or match regular expression number 2 below (the entire group fails if this one fails to match) «07[17-9]\d{8}»
      Match the characters “07” literally «07»
      Match a single character present in the list below «[17-9]»
         The character “1” «1»
         A character in the range between “7” and “9” «7-9»
      Match a single digit 0..9 «\d{8}»
         Exactly 8 times «{8}»
Assert position at a word boundary «\b»
-->

答案 1 :(得分:1)

我并不声称自己是正则表达式的专家,但我测试了一个有效的。

(^(256[0-9]{9})|^(078|077|071|079)[0-9]{8})

我尝试了以下内容:

256123456789
07812345678
07712345678
07112345678
07912345678
07212345678

请注意,最后一个与您所说的规则不符。输出与最后一个匹配。

答案 2 :(得分:1)

我会用:

(256\d|07[17-9])\d{8}

RegExr link