在我的国家,电话号码遵循这样的格式(XX)XXXX-XXXX
。但是根据输入文本的模式输入电话号码太主流了。有些人跟随,但有些人没有。我想做一个正则表达式来捕捉所有可能的情况。现在它看起来像这样:
/^[\(]?\d{2}?[\)]?\d{4}[. -]?\d{4}$/
我准备了一些测试用例来证明正则表达式的功能
# GOOD PHONES #
8432115262
843211 5262
843211.5262
843211-5262
32115262
3211.5262
3211 5262
3211-5262
(84)32115262
(84)3211.5262
(84)3211 5262
(84)3211-5262
# BAD PHONES #
!@#$%*()
()32115262
()1231 3213
()1231.3213
()1231-3213
().3213
()-3213
()3213.
()3213-
3211-5a62
sakdiihbnmwlzi
不幸的是,错误的情况()32115262
是绕过正则表达式。很清楚为什么。这部分[\(]?\d{2}?[\)]?
对错误负责。从左到右,您可以输入零或之一(
;您可以输入零位或两位数;您可以输入零个或其中一个)
。
我希望这部分应该是这样的:如果(
输入 ,则必须输入两位数 和)
,否则可以输入零或两位数。在正则表达式世界中可能会有这样或类似语义的东西吗?
提前致谢