我正在使用这个名为“简单联系表单”的Wordpress插件,它提供了标准的验证方法。
它使用以下正则表达式来表示电话号码:
/^(\+{0,1}\d{1,2})*\s*(\(?\d{3}\)?\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/
刚才它允许以下格式(可能更多):
0612345678
+31612345678
但我希望它允许+316-12345678
和06-12345678
......这可能吗?如果是这样,怎么样?
提前致谢!
答案 0 :(得分:1)
您可以使用不那么复杂的正则表达式:
^\+?\d{2}(-?\d){8,9}$
此正则表达式允许在电话号码的开头添加+
,然后匹配两位数字,之后,数字在-
之前(或之前),总共10或11位数。
现在,如果初始+
仅适用于11位数的电话号码,则可以进行调整:
^\+?\d{3}(-?\d){9}|\d{2}(-?\d){8}$
我的正则表达式允许您使用-
每个数字。如果这是一个问题,可以更改:
^\+?\d{3}(-?\d{2}){4}|\d{2}(-?\d{2}){4}$
我认为最后一个正则表达式将满足您的需求,而且非常简单!
答案 1 :(得分:0)
当你弄清楚你真正想要允许和不允许的模式时。然后在这个函数中填写它们,如果语句返回true,你就得到了你的正则表达式。
var regex = /^\+?\d{3}(-?\d{2}){4}|\d{2}(-?\d{2}){4}$/; //this is your regex, based on @Theox third answer
//allowed patterns
['0612345678', '+31612345678', '+316-12345678', '06-12345678'].every(function(test) {
return regex.exec(test) !== null;
}) &&
//disallowed patterns, none right now
[].every(function(test) {
return regex.exec(test) === null;
});