检测不同语言的联系号码

时间:2016-07-07 14:58:15

标签: javascript angularjs regex

我有一个正则表达式,用于识别联系电话号码是否有效,但如果联系电话号码的语言不同,则不起作用。

正则表达式:

return /^(\+?(\d{1,3}))?[-.\s]?\(?[0-9]\d{2}\)?[-.\s]?\d{3}[-.\s]?\d{4}/.test(contactString);

数量:

Normal format: +91 9838 838 7373
Different Language (Arabic): +٩١ ٩٨٣٨ ٨٣٨ ٧٣٧٣  

现在我如何检测阿拉伯语联系号码是否有效。

1 个答案:

答案 0 :(得分:0)

此表达式将匹配所有unicode数字。想象一下类似于\d类固醇:

[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]

我们可以使用该表达式来匹配样本中的两个电话号码。

此表达式正在执行以下测试:

  • 需要4组空格分隔数字
  • 每组数字长度可以是2到4个字符

(?:[0-9\u0660-\u0669\u06F0-\u06F9\u07C0-\u07C9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE6-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0DE6-\u0DEF\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29\u1040-\u1049\u1090-\u1099\u17E0-\u17E9\u1810-\u1819\u1946-\u194F\u19D0-\u19D9\u1A80-\u1A89\u1A90-\u1A99\u1B50-\u1B59\u1BB0-\u1BB9\u1C40-\u1C49\u1C50-\u1C59\uA620-\uA629\uA8D0-\uA8D9\uA900-\uA909\uA9D0-\uA9D9\uA9F0-\uA9F9\uAA50-\uAA59\uABF0-\uABF9\uFF10-\uFF19]{2,4}(?: |$)){4}

现场演示: https://regex101.com/r/jV5iQ5/1