正则表达式中的无效组

时间:2017-01-20 07:26:03

标签: javascript regex

我想检查任何人不要输入yahoo,gmail或任何组word.for我已经创建了正则表达式,如下所示,但当我尝试输入javascript时它会给出无效组。

if (str.match('/^(.*?(\W|^)(?i)(yahoo|gmail|com)(\W|$))$/')) {
    return true;    
}

1 个答案:

答案 0 :(得分:3)

您得到的错误与(?i)有关,这是JS正则表达式引擎不支持的内联修饰符。 (\W|^)是一些库中用于表示单词边界的常见构造,但在JS中,更容易使用单词边界,\b

我建议



var str = "YaHoo here";
if (/\b(?:yahoo|gmail|com)\b/i.test(str)) {
  console.log("Contains forbidden word!");
} else {
  console.log("Good!");
}




模式详情

  • \b - 领先的单词边界
  • (?:yahoo|gmail|com) - 3个替代方案中的任何一个
  • \b - 尾随字边界