我有以下regex:
(?:[\s:]|\d+(?:-|.)|^)(?(\d{3}))?[- .]?(\d{3})[- .]?(\d{4})(?=<|\s|$)
字符串
在复制正则表达式时,看起来有些转义反斜杠丢失了,所以这里是正确的正则表达式:(?:[\s:]|\d+(?:-|.)|^)\(?(\d{3})\)?[- .]?(\d{3})[- .]?(\d{4})(?=<|\s| $)
它用于Chrome上的Tel Linker扩展,以正确格式化网页上的电话号码链接。
但是,当URL中的空格用'%20'编码时,它无法正确格式化tel链接:例如:
https://someresource.com/tel:(904)%20640-8301
https://someresource.com/tel:(904)%20640%208301
型
不幸的是,我没有使用Regex的经验,所以任何帮助/建议都非常感谢。
2条答案
按热度按时间qrjkbowd1#
正如@mplungjan指出的,你的正则表达式是无效的。
试试这个:
字符串
如果你把它作为一个字符串使用,你需要对每个
\
进行转义:型
Tested against:
型
cbjzeqam2#
根据regex101,您提供的regex无效
字符串
如果捕获组中没有?,它是有效的,并且似乎匹配正确的东西:
型
[- .]
负责匹配tel中的空格,因此将其替换为也匹配%20
的正则表达式将解决:(?:[- .]|%20)
:型