用空格匹配数字,但中间没有换行符


Match numbers with space but not linebreak in between?

我设计了正则表达式(参见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'r'n]替换正则表达式中的's以匹配空白,但不是换行,但不能让它工作?

  2. 也可以将{6,20}应用于整个正则表达式,而不是请只提供['d()'s-]部分?我想象类似/(('+|0|'()['d()'s-]'d){6,20}/g的东西,即整个匹配的电话号码不应短于6且不超过20个字符,包括+ | 0 |(在第一位和最后一位)。

谢谢!

's表示:匹配任何空白字符。只需将其替换为简单的空白' '

/('+|0|'()['d() -]{6,20}'d/g

参见演示