查找缺少0的电话号码

时间:2015-04-02 14:42:09

标签: regex notepad++

我在Notepad ++中打开了一个csv文件,并尝试使用“搜索/替换”功能并选中“正则表达式”来查找缺少0的电话号码。

我已经开始将我的正则表达式(\d[0-9]{10})找到所有电话号码,但我只需要找到缺少前导0的那些。

请问适当的RegEx模式是什么?


csv文件的测试数据:

ID,TITLE,FNAME,SNAME,GENDER,PHONE,MOBILE,DOB,
1,Mrs,Sue,Mac,Female,01702 11000,07961111111,23/4/1958 
01,Mrs,Sue,Mac,Female,1702 11000,07961111111,23/4/1958 
2,Mr,Jim,Bell,Male,01698502269,07961111111,5/5/1958 
3,Mr,John,Smith,Male,,,,,,,,17/5/1958 00:00:00
4,,Batman,Smith,,,,,,,01389 111 111,07961111111,29/5/1958      
04,,Batman,Smith,,,,,,,1389 111 111,07961111111,29/5/1958      
5,Mr.,Hulk,Smith,Male,01389 111 111,07961111111,2/6/1958 
6,Mr.,Hulk,Briggs,Male,21,07961111111,6/6/1958 
06,Mr.,Hulk,Briggs,Male,21,7961111111,6/6/1958 
7,Mr.,Mike,Brigs,Male,15-20,07961111111,6/6/1958 
8,Mr.,Mike,Briggs,Female,20,07961111111,6/6/1958 
9,Mr,David,Golden,Male, 01254 111111,07961111111,10/6/1958
10,Mr,Pete,Lee,Male,020 7111 1111,07961111111,22/6/1958 
11,Ms,Karren,Lee,Female,02881111111,07961111111,4/7/1958 
12,Ms,Lisa,Bond,Female,,,,,,01411111100,07961111111,16/7/1958 
13,Mr,Murdasa,Smith,Male,01268 000 000,07961111111,20/7/1958 
14,,Brian,Smith,,(0)1753 604000,07961111111,24/7/1958 
15,,Brian,Smith,,12 (0)1753 604000,07961111111,24/8/1958 
015,,Brian,Smith,,12 ()1753 604000,07961111111,24/8/1958 

5 个答案:

答案 0 :(得分:4)

您应该将\d(任意数字)替换为[1-9](任何数字 0)。

如果我说得对,那么您需要的RegEx模式是:\b([1-9](\d *){9})\b,您可以将{9}调整为{8,10},具体取决于所需的电话号码长度。

http://i.imgur.com/6MHprAW.png


编辑:添加字边界(\b)并让模式忽略入站空格

答案 1 :(得分:1)

看起来你需要匹配甚至少于11个符号。 您可以使用(?<=,)\b[1-9][0-9 ]{3}[ 0-9]{6,}正则表达式获取电话号码。

这些行匹配:

  • 01,Mrs,Sue,Mac,女,1702 11000,07961111111,23 / 4/1958
  • 04 ,, Batman,Smith ,,,,,,, 1389 111 111,07961111111,29 / 5/1958
  • 06,先生,Hulk,Briggs,男,21岁,7961111111,6/6/1958

答案 2 :(得分:0)

您错过了结束边界,因此您获得了11位数字的前10位数字。

尝试(\ b [0-9] {10} \ b)

但是这会找到Hulk Briggs先生的电话号码,如果号码中有0,则没有任何作用。

不确定您的问题是否正确。您是否正在寻找不以0位数字开头的数字?你在寻找任何没有零的数字吗?

答案 3 :(得分:0)

&#34;不是零&#34;是[1-9],但它并不像使用它那么简单,因为您的某些电话号码有空格,并且您需要确保不要通过数字开始匹配。

试试这个:

(?<=,)[1-9][0-9 ]{8,10}(?=,)

请参阅live demo

这匹配逗号(但不包括它们)并允许数字的长度为9到11(您可以通过更改长度范围轻松调整)。

答案 4 :(得分:0)

检测测试样本中缺少前导0的所有电话号码的正则表达式是:

\b(?<!\(0\))[1-9](?: ?\d){8,9}\b

或以评论形式:

\b            (?# detect leading word boundary)
(?<!\(0\))    (?# confirm that it is not preceded by parenthesized 0)
[1-9]         (?# detect a non-zero digit)
(?: ?\d){8,9} (?# detect 8-9 digits, each possibly preceded by a space)
\b            (?# detect trailing word boundary)