正则表达式匹配 phone 个数字,但在文本段落中
Regex to match phone numbers, but in text paragraph
我想使用 PHP 函数 preg_replace() 突出显示文本中的 phone 个数字。
效果很好:
(?=(?:\D*\d\D*){8,14}$)[- \d()+]*
它几乎匹配那些不同的格式:
01 02 03 04 05
0102030405
+33102030405 01-02-03-04-05
01.02.03.04.05
+33 1 02 03 04 053
(33)102030405
但现在我想运行这个测试文本:
blabla 01 02 03 04 05 blabla 0102030405 blabla +33102030405 blabla
01-02-03-04-05 blabla 01.02.03.04.05 blabla +33 1 02 03 04 05 blabla
(33)102030405
我不会说流利的正则表达式,我尝试了很多东西但都失败了。
感谢您的帮助。
你可以使用
[+(]?\d(?:[-()+\s.]*\d){8,14}(?![-()+\s.]*\d)
详情:
[+(]?
- 可选的 +
或 (
\d
- 一个数字
(?:[-()+\s.]*\d){8,14}
- -
、(
、)
、+
、空格或 .
字符出现 8 到 14 次,并且然后一个数字
(?![-()+\s.]*\d)
- 不紧跟 -
、(
、)
、+
、空格或 .
字符,然后一个数字。
参见regex demo。
我想使用 PHP 函数 preg_replace() 突出显示文本中的 phone 个数字。
效果很好:
(?=(?:\D*\d\D*){8,14}$)[- \d()+]*
它几乎匹配那些不同的格式:
01 02 03 04 05
0102030405
+33102030405 01-02-03-04-05
01.02.03.04.05
+33 1 02 03 04 053
(33)102030405
但现在我想运行这个测试文本:
blabla 01 02 03 04 05 blabla 0102030405 blabla +33102030405 blabla 01-02-03-04-05 blabla 01.02.03.04.05 blabla +33 1 02 03 04 05 blabla (33)102030405
我不会说流利的正则表达式,我尝试了很多东西但都失败了。
感谢您的帮助。
你可以使用
[+(]?\d(?:[-()+\s.]*\d){8,14}(?![-()+\s.]*\d)
详情:
[+(]?
- 可选的+
或(
\d
- 一个数字(?:[-()+\s.]*\d){8,14}
--
、(
、)
、+
、空格或.
字符出现 8 到 14 次,并且然后一个数字(?![-()+\s.]*\d)
- 不紧跟-
、(
、)
、+
、空格或.
字符,然后一个数字。
参见regex demo。