Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Regex查找电话号码中的重复组_Regex - Fatal编程技术网

使用Regex查找电话号码中的重复组

使用Regex查找电话号码中的重复组,regex,Regex,我正在寻找一种方法,使用正则表达式搜索具有相同数字重复的明显错误的电话号码。这些数字的格式和存储方式如下: (111)111-1111 我不能以任何方式修改文本 我尝试过修改我见过的一些正则表达式行,例如: ^([0-9])\1{2}.\1{3}.\1{4}$ 这是为了找到数字之间有句点的重复数字。但是,我还没有弄清楚如何将第一个字符作为括号 任何帮助都将不胜感激 您误解了点运算符的用途。它不是匹配一个句点,它匹配任何东西。在这个(非常糟糕的)正则表达式中,它只会跳过-——因为它匹配任何东西,所

我正在寻找一种方法,使用正则表达式搜索具有相同数字重复的明显错误的电话号码。这些数字的格式和存储方式如下:

(111)111-1111

我不能以任何方式修改文本

我尝试过修改我见过的一些正则表达式行,例如: ^([0-9])\1{2}.\1{3}.\1{4}$ 这是为了找到数字之间有句点的重复数字。但是,我还没有弄清楚如何将第一个字符作为括号


任何帮助都将不胜感激

您误解了
点运算符的用途。它不是匹配一个句点,它匹配任何东西。在这个(非常糟糕的)正则表达式中,它只会跳过
-
——因为它匹配任何东西,所以它也会匹配
1112113111
之类的东西

请改用此regexp:

^\(?([0-9])\1{2}\)?\1{3}-?\1{4}$

这将检查第一个组周围是否有括号,这样它在没有括号的情况下仍然可以工作;并特别检查第二组和第三组数字之间是否存在破折号(可选)。

是否尝试将括号添加到此正则表达式中?是的,我尝试在几个点中添加[(],但这将第一组从111更改为(111),这不是我要添加的
\(
左侧将查找可选的圆括号,并添加
\)
结尾处将查找可选的右括号。当然,然后您必须在开头部分添加正向前瞻,以确保结尾部分在那里,或者在结尾部分添加正向前瞻,以确保开头部分在那里……您是否尝试使用文字“(“and”)”在你的正则表达式中通过转义它?所以
111
的正则表达式变成了
\(111\)
作为一个简单的例子nope.:-)这就是为什么我发布了一条评论而不是答案。我采取了不同的方法;我首先去掉所有格式(删除
()-
和空格)并验证剩下的内容。这要容易得多。这也意味着用户可以省略格式设置,如果出于显示目的需要,我有一个正则表达式,它将为此目的正确设置格式。这非常有效,感谢您对点运算符的澄清!