匹配数字与空间,但不是间隔线?

时间:2014-08-17 20:22:52

标签: php regex newline space

我设计了正则表达式(see fiddle) /(\+|0|\()[\d()\s-]{6,20}\d/g以匹配以下格式的电话号码。

(\+|0|\()是匹配+或0或(首先是

[\d()\s-]用于匹配数字,括号,空格,连字符

\d将匹配最后一位的数字

+43 543 765 5434

0043 543 765 5434

0543 765 5434

+43(0)543 765 5434

05437655434

0543-765-5434

不幸的是,这个正则表达式还匹配数字之间的换行符,比如

" 43

654 416 4444 "或

" stowasser09

65

808090 "

  1. 因此,我考虑将正则表达式中的\s替换为[^\S\r\n]以匹配 空白但没有换行,但无法使其发挥作用?

  2. 同样将{6,20}应用于整个正则表达式会更好,而不是 只是[\d()\s-] - 部分好吗?我想象/((\+|0|\()[\d()\s-]\d){6,20}/g之类的东西,即整个匹配的电话号码不应小于6且不超过20个字符,包括+ | 0 | (在第一位和最后一位。

  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

\s表示:匹配任何空格字符。只需用简单的空格' '

替换它
/(\+|0|\()[\d() -]{6,20}\d/g

请参阅此demo