正则表达式,用于排除带或不带+ 1的855号码

时间:2017-05-25 19:57:41

标签: regex

我有以下字符串集:

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

我不确定为什么。

任何正则表达式的帮助都可以吗?

3 个答案:

答案 0 :(得分:1)

尝试使用以下正则表达式。

正则表达式: ^(?=.*855).*$

<强>解释

  • (?=.*855)字符串中任意位置855的正面预测。如果存在,则只有整个字符串匹配。

<强> Regex101 Demo

答案 1 :(得分:0)

另一种方法是

^[1\s+]*(?:855)[\s0-9]*$
  1. ^是字符串的开头。
  2. [1\s+]*将这些字符中的任何一个匹配0次或更多次。
  3. (?:855)是一个非捕获组,表示855必须在字符串中。
  4. [\s0-9]*匹配类中的任何字符(空格或数字)0次。
  5. $是字符串的结尾。
  6. 如果您不希望855后面的空格将4.中的字符类更改为您想要的内容。

    working regex

答案 2 :(得分:0)

以下是一种方法:

tel:(?!\+?1?\s?855).*
  • tel:&lt; - litteral match
  • (?!\+?1?\s?855)&lt; - 对于以+1\s855开头的+1\s是可选的,但必须按此顺序排列的任何数字,我们都会向前看
  • .*&lt; - 匹配字符串的其余部分,用于未被否定前瞻捕获的字符串。

https://regex101.com/r/pIcTHA/1