正则表达式:匹配忽略非数字的重复数字
Regex: Match repeating digits ignoring of non-digits
我有一个乱七八糟的 phone 数字列表,有些(可能是假的)始终包含相同的重复数字,但也可能包含其他标点符号、空格、字母等。我如何识别这些数字.NET 正则表达式。这是一个例子:
00000000000000
(11)1111111111
22/ 222-2222222222
cell +33,333-3333-3333.
14 244-44444 Ext. 444
我需要正则表达式来匹配前 4 个,但不是最后一个有其他数字的。我的 ^(\d)+$
抓住了第一个数字。我还尝试 ^([.-[\D]])+$
来匹配不是非数字的重复字符。失败的。 ^(\d)(?:[-[\D]])+$
也一样。一种简单的方法是使用 \D
在一次传递中删除所有非数字,然后使用第一个正则表达式,但我不想创建 2 个对正则表达式引擎的调用(这些是来自 SQL 服务器).
每行输出一个简单的布尔值 0-1。没有匹配时为 0,有匹配时为 1:
1
1
1
1
0
更新:
稍微扩展一下这个问题。如果我想在正则表达式匹配时删除整行,那么替换正则表达式是什么?因此,替换正则表达式将 return 4 个空白行和 1 个原始行。我正在尝试环顾四周,但失败了。
您可以使用
^\D*(\d)(?:\D*)+\D*$
参见regex demo。
详情
^
- 字符串开头
\D*
- 0+ 个非数字
(\d)
- 第 1 组:一个数字
(?:\D*)+
- 连续出现 1 次或多次
\D*
- 0+ 个非数字
</code> - 与第 1 组 </li> 中捕获的数字相同
</ul></li>
<li><code>\D*
- 0+ 个非数字
$
- 字符串结尾。
我有一个乱七八糟的 phone 数字列表,有些(可能是假的)始终包含相同的重复数字,但也可能包含其他标点符号、空格、字母等。我如何识别这些数字.NET 正则表达式。这是一个例子:
00000000000000
(11)1111111111
22/ 222-2222222222
cell +33,333-3333-3333.
14 244-44444 Ext. 444
我需要正则表达式来匹配前 4 个,但不是最后一个有其他数字的。我的 ^(\d)+$
抓住了第一个数字。我还尝试 ^([.-[\D]])+$
来匹配不是非数字的重复字符。失败的。 ^(\d)(?:[-[\D]])+$
也一样。一种简单的方法是使用 \D
在一次传递中删除所有非数字,然后使用第一个正则表达式,但我不想创建 2 个对正则表达式引擎的调用(这些是来自 SQL 服务器).
每行输出一个简单的布尔值 0-1。没有匹配时为 0,有匹配时为 1:
1
1
1
1
0
更新: 稍微扩展一下这个问题。如果我想在正则表达式匹配时删除整行,那么替换正则表达式是什么?因此,替换正则表达式将 return 4 个空白行和 1 个原始行。我正在尝试环顾四周,但失败了。
您可以使用
^\D*(\d)(?:\D*)+\D*$
参见regex demo。
详情
^
- 字符串开头\D*
- 0+ 个非数字(\d)
- 第 1 组:一个数字(?:\D*)+
- 连续出现 1 次或多次\D*
- 0+ 个非数字</code> - 与第 1 组 </li> 中捕获的数字相同 </ul></li> <li><code>\D*
- 0+ 个非数字$
- 字符串结尾。