我有一个正则表达式,可以识别联系号码是否有效,但如果联系号码使用不同的语言,则该正则表达式不起作用。
正则表达式:
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): +٩١ ٩٨٣٨ ٨٣٨ ٧٣٧٣
现在我如何检测该阿拉伯语联系号码是否有效。
最佳答案
此表达式将匹配所有 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}
关于javascript - 检测不同语言的联系号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38248801/