我正在尝试检查用户在前端提供的号码是否与我的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
我尝试了多种逃避方法,但没有成功。
有人可以协助,或者只是告诉我绳索吗?
提前致谢。
答案 0 :(得分:1)
如果从字符串创建正则表达式,则应使用\\
而不是每个\
(因为当您创建字符串时,单个反斜杠是转义字符,双反斜杠是一个简单的反斜杠)< / p>
同样,如果您尝试:console.log('\')
vs console.log('\\')
,对于第一个,您将收到以下错误:Invalid or unexpected token
这是完整的代码:
var patt = new RegExp('^((?:\\+27|27)|0)(\\d{9})$');
if(!patt.test($('#phoneNumber').val())){
this.error = "Please enter a valid number.";
return;
}
您可以通过以下方式获得相同的结果(请注意,这次您不创建字符串,然后从字符串创建一个正则表达式,而是直接创建一个正则表达式,因此您之前不需要转义反斜杠每个反斜杠):
var patt = /^((?:\+27|27)|0)(\d{9})$/