0
我們需要在JavaScript中使用一些HTML格式的匹配電話號碼,並且非常接近但存在問題。我們不想匹配顯示在max-length="404-555-1212"
等屬性中的電話號碼。請看下面的文字:JavaScript正則表達式來匹配電話號碼,但不是HTML屬性
Sample:
Shouldn’t Match:
max-length=''
max-length=""
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
-.,[email protected]#$%^&*();\/|<>"'
12345 -98.7 3.141 .6180 9,000 +42
555.123.4567 +1-(800)-555-2468
用下面的正則表達式,我們能夠抓住所有的電話號碼,但不排除屬性:
/(\d{1}[-. ])?\(?\d{3}\)?[-. ]? *\d{3}-? *[-. ]?\d{4}/g
我們試過以下,但它留下該>
在<strong>
末:
/[^"='](\d{1}[-. ])?\(?\d{3}\)?[-. ]? *\d{3}-? *[-. ]?\d{4}/g
如何使這項工作有什麼想法?
不需要的屬性總是被稱爲「最大長度」,或者他們可以是任何東西?電話號碼前是否有等號? – Schlaus 2014-09-12 21:07:42
不要針對HTML運行regexp。相反,提取值並針對它們運行regexps。 – 2014-09-12 21:28:02
@Schlaus屬性可以是任何東西,不只是最大長度。在合法的電話號碼之前永遠不會有一個=。 – 2014-09-13 13:08:41