我一直在寻找能够为我找到一个正则表达式的正则表达式,所有我发现的要么需要破折号或限制其他我不需要的东西。
喜欢这个: ^(([0-9] {3})?)[? - 。 ]([0-9] {3})[? - 。 ]([0-9] {4})$
基本上我想允许这些类型的电话号码输入,这些都是有效的:
+000 111111111
00011111111111
0022 111111111111
0022111111111
+ 333-4444-5555-6666
000-7878787-0000-4587
请注意,位数不受限制,我只希望验证过滤掉空输入和字母。还会过滤掉除最多4个破折号以外的所有其他字符。 4个空格和一个可选的单加号。
这可以通过preg_match吗?
感谢任何帮助,谢谢!
答案 0 :(得分:2)
当然可能。但我认为使用不理解的东西是危险的。我会做这样的事情
^(?!(?:\d*-){5,})(?!(?:\d* ){5,})\+?[\d- ]+$
最后一部分\+?[\d- ]+
允许使用可选的+
,后跟至少一个数字,短划线或空格
负向前瞻确保不超过4个短划线或空格。
限制:
- 仪表板或空格可以在一行中
- 它还接受-
作为有效
在Regexr链接上自己尝试一下,你可以添加你想要的例子。
答案 1 :(得分:1)
删除想要的字符(“”,“ - ”),如果count< = 4(对于“+”字符= = 1),则计算金额,然后查询if语句。所以总的来说就是
if(countSpace< = 4&& countDash< = 4&& countPlus == 1){ ... }
至于为空,只需使用标准表格验证来检查输入是否已填写。