印度手机号码的正则表达式

时间:2010-09-28 13:30:28

标签: regex

我希望正常表达印度手机号码,其中包含10位数字 应该匹配的数字从9或8或7开始。

例如:

9882223456
8976785768
7986576783

它不应与从1到6或0开始的数字匹配。

16 个答案:

答案 0 :(得分:99)

^[789]\d{9}$应该可以解决问题。

^     #Match the beginning of the string
[789] #Match a 7, 8 or 9
\d    #Match a digit (0-9 and anything else that is a "digit" in the regex engine)
{9}   #Repeat the previous "\d" 9 times (9 digits)
$     #Match the end of the string

<强>更新

印度的一些电信运营商推出了新的手机号码系列,以数字6开头。

用于该用途:

^[6-9]\d{9}$

答案 1 :(得分:34)

^(?:(?:\+|0{0,2})91(\s*[\-]\s*)?|[0]?)?[789]\d{9}$

嗨,这是印度本地手机号码验证和印度国际的正则表达式。

从9,8,7开始,您也可以添加更多内容。

您可以使用https://regex101.com/

进行测试

有效号码是。

9883443344
09883443344
919883443344
0919883443344
919883443344
+ 91-9883443344
0091-9883443344
+91-9883443344
+ 91- 9883443344
+91 - 9883443344
0091 - 9883443344

答案 2 :(得分:9)

你走了:))

^[7-9][0-9]{9}$

答案 3 :(得分:7)

重申其他答案以及有关数字的其他信息:

new Regex("^[7-9][0-9]{9}$")

将匹配使用罗马数字编写的电话号码。

new Regex(@"^[7-9]\d{9}$", RegexOptions.ECMAScript)

将与之前的正则表达式匹配。指定RegexOptions.ECMAScript\d匹配任何罗马数字。

new Regex(@"^[7-9]\d{9}$")

将匹配使用任意数字写入最后9位数字的电话号码。

不同之处在于,前两个模式仅匹配9123456789等电话号码,而第三个模式也匹配9੧੨੩੪੫੬੭੮੯等电话号码。

因此,您可以使用\d来匹配原生数字。但是,如果要将原始数字的匹配限制为仅限某些(例如7-9),则需要执行其他步骤。为旁遮普(印度)能够匹配੯੧੨੩੪੫੬੭੮੯你可以这样做:

CultureInfo.GetCultureInfo("pa-IN").NumberFormat.NativeDigits.Skip(7).Take(3)

这将返回7-9的原始数字。然后,您可以将它们连接在一起,形成数字7-9的“文化感知”正则表达式。

答案 4 :(得分:2)

这对我使用JAVA脚本进行chrome扩展。

document.body.innerHTML = myFunction();
function myFunction()
{
    var phonedef = new RegExp("(?:(?:\\+|0{0,2})91(\\s*[\\- ]\\s*)?|[0 ]?)?[789]\\d{9}|(\\d[ -]?){10}\\d", "g");

    var str = document.body.innerHTML; 
    var res = str.replace(phonedef, function myFunction(x){return "<a href='tel:"+x.replace( /(\s|-)/g, "")+"'>"+x+"</a>";});

    return res;
}

这包括以下数字模式

9883443344
8888564723 
7856128945

09883443344 
0 9883443344 
0-9883443344

919883443344 
91 8834433441 
91-9883443344 
91 -9883443344 
91- 9883443344 
91 - 9883443344 
91 -9883443344

+917878525200 
+91 8834433441 
+91-9883443344 
+91 -9883443344 
+91- 9883443344 
+91 - 9883443344 
+91 -9883443344

0919883443344 
0091-7779015989 
0091 - 8834433440 
022-24130000 
080 25478965 
0416-2565478 
08172-268032 
04512-895612 
02162-240000 
022-24141414 
079-22892350

答案 5 :(得分:2)

Swift 4

 - Mobile Number Validation [starting with 7,8,9]

     func validate(value: String) -> Bool {
                let PHONE_REGEX = "^[7-9][0-9]{9}$";
                let phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX)
                let result =  phoneTest.evaluate(with: value)
                return result
            }

       if validate(value: value) {
                print("True")
            }

答案 6 :(得分:1)

"^((0091)|(\+91)|0?)[789]{1}\d{9}$";

也是一个有效的表达方式。您可以在0091,+910之前添加,并且是可选的。

有关代码示例的更多详细信息,请参阅my blog

答案 7 :(得分:1)

var PHONE_REGEXP = /^[789]\d{9}$/;

这适用于angularjs或javascript或任何js框架中的ng-pattern

答案 8 :(得分:0)

这是一个旨在匹配典型电话号码的正则表达式:

^(((\+?\(91\))|0|((00|\+)?91))-?)?[7-9]\d{9}$

答案 9 :(得分:0)

如果您尝试在同一文本(re.findall)中获取多个手机号码,那么您应该使用以下内容。它基本上与已经提到的相同,但它也有特殊的看后面向前看断言,这样我们就不会这样做选择紧接在数字之前或之后的移动电话号码。我还在捕获实际移动电话号码之前添加了0?,以处理人们将0添加到移动电话号码的特殊情况。

(?<!\d)(?:\+91|91)?\W*(?P<mobile>[789]\d{9})(?!\d)

您可以在pythex.org上试用!

答案 10 :(得分:0)

其他人讲的解决方案(^[789]\d{9}$^[789][0-9]{9}$)有一个很大的流程(如果用于表单验证)它还会验证超过10位的数字。 基本上我们(因为我也在使用这个)正则表达式找到一个放在字符串中任何位置的有效数字。就像这个123456 9897969594 12345。

通过另外检查包含数字的字符串的长度可以解决该问题。 像这样if(regex.test(value) && value.length==10)/****do whatever*****/alert("Valid Number");

注意: - 根据我的测试,regex.test(value)只测试firefox(mozilla)和chrome(webkit)中此表达式^[789]\d{9}$的罗马数字

答案 11 :(得分:0)

/(((^[\+,0][9][1])(((\s[0-9]{7,10})|(\S[0-9]{7,10}))|([-]\S[0-9]{7,10})))|((^[\+,0][2]{2,2})((\S[0-9]{7,8})|((([-])[0-9]{7,8})|(\s[0-9]{7,8})))))|(((^[6,7,8,9][0-9]{9,9}))|(^[0,\+](([9][1)|[6,7,8,9]))[0-9]{8,9}))/gm

我不知道是否有一个简单的表达式,但我创建了这个REGEX,验证所有可能的印度数字,包含(0或+)然后(91或22(因为我需要它为马哈拉施特拉邦和第二件事是印度有太多STD代码))或者直接搜索从6,7,8,9开始的数字,这些数字在它前面没有0。

(/ [regex] / gm)是一个多行搜索的试用版,如果它无法工作/给出错误,你可以删除它(// gm)。

欢迎在regex101尝试一下。 我的REGEX项目是here

答案 12 :(得分:0)

在Swift

 extension String {
    var isPhoneNumber: Bool {
      let PHONE_REGEX = "^[7-9][0-9]{9}$";
      let phoneTest = NSPredicate(format: "SELF MATCHES %@", PHONE_REGEX)
      let result =  phoneTest.evaluate(with: self)
      return result
   }
}

答案 13 :(得分:0)

您可以使用此

/^(?:(?:\+|0{0,2})91(\s*|[\-])?|[0]?)?([6789]\d{2}([ -]?)\d{3}([ -]?)\d{4})$/

有效条目:

6856438922
7856128945
8945562713
9998564723
+91-9883443344
09883443344
919883443344
0919883443344
+919883443344
+91-9883443344
0091-9883443344
+91 9883443344
+91-785-612-8945
+91 999 856 4723

无效条目:

WAQU9876567892
ABCD9876541212
0226-895623124
0924645236
0222-895612
098-8956124
022-2413184

https://regex101.com/上进行验证

答案 14 :(得分:0)

对于Laravel 5.4 +

'mobile_number_1'=>'必填|数字| min:0 | regex:/ ^ [789] \ d {9} $ /'应该可以解决问题

答案 15 :(得分:0)

我在我的项目中使用了此正则表达式,效果很好。

pattern="[6-9]{1}[0-9]{9}"