Javascript RegExp-从字符串中提取电话号码

Javascript RegExp-从字符串中提取电话号码,javascript,regex,phone-number,Javascript,Regex,Phone Number,我有下面的工作正则表达式来提取许多不同格式的电话号码 请看这里: (如果未加载脚本,请按顶部菜单中的“运行”按钮) 正如您在示例中所看到的(通过以下链接),最后2-3个电话号码格式(var PhoneNumber)与使用的正则表达式不匹配。 您可以测试正则表达式,在脚本中修改它并运行它 因此,我需要一个匹配所有枚举电话号码格式的正则表达式(从整个网页(document.body.innerHTML)中提取这些格式)。我不知道您希望如何规范,但这与您的所有示例都匹配: var regex = ne

我有下面的工作正则表达式来提取许多不同格式的电话号码

请看这里:

(如果未加载脚本,请按顶部菜单中的“运行”按钮)

正如您在示例中所看到的(通过以下链接),最后2-3个电话号码格式(var PhoneNumber)与使用的正则表达式不匹配。 您可以测试正则表达式,在脚本中修改它并运行它


因此,我需要一个匹配所有枚举电话号码格式的正则表达式(从整个网页(document.body.innerHTML)中提取这些格式)。

我不知道您希望如何规范,但这与您的所有示例都匹配:

var regex = new RegExp("\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+", "g");
请参阅此正则表达式的一部分


正则表达式中的一个小错误:当想要在字符类中包含文字破折号时,可以将其转义或放在第一位或最后一位


您有
[\\s-.]
,这是不正确的。应该是
[\\s.-]
[-\\s.]
[\\s\\-.]

谢谢您的帮助@bohemian。实际上,我忘了提到我也不想提取国家代码。但这对我帮助很大。如果你可以给我另一个regexp提取没有国家代码的电话号码,将是最好的。也谢谢你的评论。好的,我把代码改成国家代码。仅出于好奇,您可以提供新的正则表达式来排除国家代码吗?谢谢!我必须指出一个问题,在您提供的实时演示中,所有字符串都是匹配的,但是当我运行上面提供的脚本时,下一个字符串不匹配:(0490)260722(0)442207724+33(0)442207724您能帮我吗?我可以帮助处理Vontry cides,但“排除”到底是什么意思?我将研究你的新例子。我已经研究了你遇到问题的新例子。我试过了,它们和新的很相配:看。告诉我更多关于你的匹配方式/匹配内容的信息
var regex = new RegExp("\\+?\\(?\\d*\\)? ?\\(?\\d+\\)?\\d*([\\s./-]?\\d{2,})+", "g");