Javascript:RegExp模式没有成为有效的正则表达式

时间:2017-05-02 14:59:49

标签: 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: /^((?:+27|27)|0)(d{9})$/:Nothing to repeat

我尝试了多种逃避方法,但没有成功。

有人可以协助,或者只是告诉我绳索吗?

提前致谢。

1 个答案:

答案 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})$/