Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:RegExp模式未作为有效的正则表达式拾取_Javascript_Regex - Fatal编程技术网

Javascript:RegExp模式未作为有效的正则表达式拾取

Javascript:RegExp模式未作为有效的正则表达式拾取,javascript,regex,Javascript,Regex,我试图检查用户在前端提供的号码是否与我的RegExp匹配,如下面的代码所示: var patt = new RegExp("^((?:\+27|27)|0)(\d{9})\$"); if(!patt.test($('#phoneNumber').val())){ this.error = "Please enter a valid number."; return; } 但是,我在控制台中遇到以下错误: SyntaxError: Invalid regular expression:

我试图检查用户在前端提供的号码是否与我的RegExp匹配,如下面的代码所示:

var patt = new RegExp("^((?:\+27|27)|0)(\d{9})\$");

if(!patt.test($('#phoneNumber').val())){
  this.error = "Please enter a valid number.";
  return;
}
但是,我在控制台中遇到以下错误:

SyntaxError: Invalid regular expression: /^((?:+27|27)|0)(d{9})$/:Nothing to repeat
我尝试了多种逃生方法,但都没有成功

有人能帮忙吗,还是让我看看这条绳子


提前感谢。

如果从字符串创建regexp,则应使用
\
而不是每个
\
(因为创建字符串时,单个反斜杠是转义字符,而双反斜杠是简单的反斜杠)

同样,如果您尝试:
console.log('\')
vs
console.log('\\')
,对于第一个,您将得到以下错误:
无效或意外的令牌

这是完整的代码:

var patt = new RegExp('^((?:\\+27|27)|0)(\\d{9})$');

if(!patt.test($('#phoneNumber').val())){
  this.error = "Please enter a valid number.";
  return;
}
您可以通过以下方式获得相同的结果(请注意,这一次您不会创建字符串,然后从字符串创建regexp,而是直接创建regexp,因此不需要在每个反斜杠之前使用转义反斜杠):


谢谢你这么快回来,但这对我不起作用。然而,这对我来说是有效的:
var patt=newregexp(“^([0-9]\\\+)(\\d{9})|(\\d{11}))$”这适用于所有南非电话号码,适用于将来的任何人。您的更新答案现在适用于我。谢谢你的帮助!太棒了,不客气!将来,如果您想测试正则表达式,请使用此站点:,如果您从字符串在JS中创建正则表达式,请记住用反斜杠转义每个反斜杠。
var patt = /^((?:\+27|27)|0)(\d{9})$/