Javascript 允许在这个正则表达式中使用破折号

Javascript 允许在这个正则表达式中使用破折号,javascript,regex,Javascript,Regex,我正在使用这个名为“Easy contact form”的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}$/ 刚才它允许以下格式(可能更多): 但我希望它允许+316-12345678和06-12345678也。。。这可能吗?如果是,怎么做 提前谢谢 您可以使用不太复杂的正则表达式: ^\

我正在使用这个名为“Easy contact form”的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}$/
刚才它允许以下格式(可能更多):

但我希望它允许
+316-12345678
06-12345678
也。。。这可能吗?如果是,怎么做


提前谢谢

您可以使用不太复杂的正则表达式:

^\+?\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}$

我认为这最后一个正则表达式将满足您的需求,而且非常简单

当你弄清楚你真正想允许和不允许的模式时。然后在这个函数中填写它们,如果语句返回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;
});

你试过修改正则表达式吗?如果你只有这4个需求,你的正则表达式非常复杂。你的电话号码可以有10或11个数字,对吗?似乎你需要定义你想要的允许模式。非常感谢!!这些正则表达式是你自己写的吗?或者你使用工具?我想学习:-)@user2191227:我自己写了这些,用来检查语法是否正确,并测试它匹配/不匹配的内容。这是一个很好的工具,可以练习!
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;
});