JavaScript Regex匹配电话号码但不匹配HTML属性

时间:2014-09-12 20:56:14

标签: javascript regex

我们需要使用JavaScript的一些HTML格式的匹配电话号码,并且非常接近但有问题。我们不希望匹配显示在max-length="404-555-1212"等属性中的电话号码。请考虑以下文本:

Sample:

Shouldn’t Match:
max-length='0123456789'
max-length="0123456789"
max-length=012-345-6789"

Don’t want the >
<strong>866.643.4170</strong>

Don’t really want this plus included either:
+1-(800)-555-2468

abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789 +-.,!@#$%^&*();\/|<>"'
12345 -98.7 3.141 .6180 9,000 +42
555.123.4567     +1-(800)-555-2468

使用以下Regex,我们可以获取所有电话号码但不排除属性:

/(\d{1}[-. ])?\(?\d{3}\)?[-. ]? *\d{3}-? *[-. ]?\d{4}/g

我们尝试了以下操作,但它将>留在<strong>的末尾:

/[^"='](\d{1}[-. ])?\(?\d{3}\)?[-. ]? *\d{3}-? *[-. ]?\d{4}/g

有关如何使这项工作的任何想法?

1 个答案:

答案 0 :(得分:1)

所以有人昨天回答了这个问题,我回来接受答案,但它已被删除。但是,他们提供的解决方案确实有效,对于子孙后代,我想发布他们给出的解决方案。

这是解决问题的正则表达式:

/(?:\d[-. ])?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4}(?!["'])/g

以下是工作示例的链接:

http://regex101.com/r/rK6wY1/1

我希望我可以归功于最初的回答者。