我有以下字符串集:
tel:+1 855 345 3455
tel:+185564354
tel:+85523456
tel:1855345445
tel:6047222733
tel:+54434553
tel:+1833453335
我正在尝试编写一个正则表达式,它将省略任何包含855数字的字符串值,该数字可能会或可能不会是1,+,空格或三者的组合。
我尝试了一些,但似乎没有人给我100%准确的匹配。
似乎适用于大多数字符串的是:**^tel:[+]?[1]?[ ]?[^8][^5][^5].*$**
但它也匹配这两个字符串值:
tel:+1 855 345 3455
tel:+185564354
我不确定为什么。
任何正则表达式的帮助都可以吗?
答案 0 :(得分:1)
尝试使用以下正则表达式。
正则表达式: ^(?=.*855).*$
<强>解释强>
(?=.*855)
字符串中任意位置855
的正面预测。如果存在,则只有整个字符串匹配。<强> Regex101 Demo 强>
答案 1 :(得分:0)
另一种方法是
^[1\s+]*(?:855)[\s0-9]*$
^
是字符串的开头。[1\s+]*
将这些字符中的任何一个匹配0次或更多次。(?:855)
是一个非捕获组,表示855
必须在字符串中。[\s0-9]*
匹配类中的任何字符(空格或数字)0次。$
是字符串的结尾。如果您不希望855
后面的空格将4.中的字符类更改为您想要的内容。
答案 2 :(得分:0)
以下是一种方法:
tel:(?!\+?1?\s?855).*
tel:
&lt; - litteral match (?!\+?1?\s?855)
&lt; - 对于以+1\s855
开头的+1\s
是可选的,但必须按此顺序排列的任何数字,我们都会向前看.*
&lt; - 匹配字符串的其余部分,用于未被否定前瞻捕获的字符串。