Javascript:RegExp模式未作为有效的正则表达式拾取
我试图检查用户在前端提供的号码是否与我的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:
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('\')
vsconsole.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})$/