Нам нужны номера телефонов для сопоставления в некоторых кусках HTML с JavaScript и очень близки, но возникают проблемы. Мы не хотим сопоставлять номера телефонов, которые отображаются в таких атрибутах, как max-length="404-555-1212"
. Рассмотрим следующий текст:JavaScript Regex соответствует номерам телефонов, но не соответствует атрибутам 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
со следующими Regex, мы можем захватить все телефонные номера, но это не исключает атрибуты:
/(\d{1}[-. ])?\(?\d{3}\)?[-. ]? *\d{3}-? *[-. ]?\d{4}/g
Мы пытались следующее, но покидает >
в конце <strong>
:
/[^"='](\d{1}[-. ])?\(?\d{3}\)?[-. ]? *\d{3}-? *[-. ]?\d{4}/g
Любые мысли о том, как сделать эту работу?
Являются ли нежелательные атрибуты всегда называемыми «max-length», или они могут быть чем угодно? Есть ли знак равенства перед номером телефона? – Schlaus
Не запускайте регулярное выражение против HTML. Вместо этого извлеките значения и запустите с ними регулярные выражения. – 2014-09-12 21:28:02
@Schlaus Атрибут может быть любым, а не только max-length. До законного номера телефона никогда не будет. –