正则表达式中的匹配列表符号(角度2)

时间:2018-10-22 17:03:09

标签: javascript regex angular

我正在尝试匹配正则表达式中的符号列表,但是无论如何结果总是返回错误

符号列表=!@#$ + * {}?<>&’” [] =%^

    if (text.match('^[\[\]\!\"\#\$\%\&\'\(\)\*\+\,\/\<\>\=\?\@\[\]\{\}\\\\\^\_\`\~]+$')) { 
      this.specialChar = true;
    } else {
      this.specialChar = false;
    }

我遇到以下错误:

Invalid regular expression: /^[[]!"#$%&'()*+,/<>=?@[]{}\\^_`~]+$/: Nothing to repeat

如何正确匹配正则表达式中的符号?基本上,我想检查文本是否包含这些符号中的任何一个。

1 个答案:

答案 0 :(得分:0)

您应该改用此正则表达式构造函数:

   if (text.match(/^[\[\]\!\"\#\$\%\&\'\(\)\*\+\,\/\<\>\=\?\@\[\]\{\}\\\\\^\_\`\~]+$/)) { 
      this.specialChar = true;
    } else {
      this.specialChar = false;
    }

失败的原因是您使用了正则表达式字符串构造函数。如果仍要这样做,则需要DOUBLE逃脱字符,如下所示:

if (text.match('^[\\[\\]\\!\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\/\\<\\>\\=\\?\\@\\[\\]\\{\\}\\\\\\^\\_\\`\\~]+$')) { 

现在,您将创建一个有效的正则表达式。