电话正则表达式空间[重复]
Posted
技术标签:
【中文标题】电话正则表达式空间[重复]【英文标题】:phone regex space [duplicate] 【发布时间】:2018-12-01 11:40:22 【问题描述】:我有这个电话正则表达式,但我希望它接受空格。
例如+57 52 5252255
应该通过,但目前没有通过。
“+91 9 820 09 8200”也应该通过
所以任何地方的空间都是可以接受的
var phone_regex =/^\s*(?:\+?(\d1,3))?[- (]*(\d3)[- )]*(\d3)[- ]*(\d4)(?: *[x/#]1(\d+))?\s*$/;
https://jsfiddle.net/ofn9knay/268/
【问题讨论】:
相关:***.com/questions/50978414/… 只是一个想法,我相信有人会为你修复正则表达式,但我会在验证数字之前尝试去掉所有不必要的符号和空格。这样,您可以在将电话号码插入数据库之前定义自己的电话号码格式。 【参考方案1】:为了匹配该字符串,您的第二个捕获组需要接受 2 或 3 位数字。
pattern = /^\s*(?:\+?(\d1,3))?[- (]*(\d2,3)[- )]*(\d3)[- ]*(\d4)(?: *[x/#]1(\d+))?\s*$/;
test_strings = [
"+57 52 5252255",
"9820098200#301",
"+919820098200",
"+91-982-009-8200",
"+1 (866) 582-2655",
"+91 444 741 4000",
];
for (var i = 0; i < test_strings.length; i++)
console.log(test_strings[i] + ": " + pattern.test(test_strings[i]));
【讨论】:
我希望空间在任何地方,而不是在某些地方 当前正则表达式确实接受数字集之间的空格。您是否想要一个正则表达式来匹配无限重复的一组空格/破折号分隔的任意长度的数字系列?只能用括号括起来第二组吗?最重要的是,你有额外的测试字符串吗?【参考方案2】:我们可以尝试调整您现有的复杂正则表达式,但假设您已经将电话号码作为变量的输入,那么要做的一件简单的事情就是删除所有空格:
var phone_regex =/^\s*(?:\+?(\d1,3))?[- (]*(\d3)[- )]*(\d3)[- ]*(\d4)(?: *[x/#]1(\d+))?\s*$/;
var phone = "+91 9 820 09 8200";
phone = phone.replace(/ /g,'');
console.log(phone_regex.test(phone));
然后,只需照常使用当前的正则表达式即可。
【讨论】:
我当前的正则表达式不允许你在小提琴中看到的空格 @Jamesmarcus 你真的读过我的回答吗?我建议您在应用当前正则表达式之前从数字中删除空格。 哦,我知道了,但目前这是我的代码 jsfiddle.net/uekpasv6 我如何调整它以按照您的建议进行操作? @Jamesmarcus 你的演示有点薄,至少就不是真正的演示而言。只需在电话号码变量上调用.replaece(/ /g, '')
。
那你的代码有问题。该逻辑在演示中运行良好。以上是关于电话正则表达式空间[重复]的主要内容,如果未能解决你的问题,请参考以下文章
用js的正则表达式检测电话号码,要求必须是1开头,只能是11位数字,该正则表达式怎么写?