我正在尝试匹配正则表达式中的符号列表,但是无论如何结果总是返回错误
符号列表=!@#$ + * {}?<>&’” [] =%^
if (text.match('^[\[\]\!\"\#\$\%\&\'\(\)\*\+\,\/\<\>\=\?\@\[\]\{\}\\\\\^\_\`\~]+$')) {
this.specialChar = true;
} else {
this.specialChar = false;
}
我遇到以下错误:
Invalid regular expression: /^[[]!"#$%&'()*+,/<>=?@[]{}\\^_`~]+$/: Nothing to repeat
如何正确匹配正则表达式中的符号?基本上,我想检查文本是否包含这些符号中的任何一个。
答案 0 :(得分:0)
您应该改用此正则表达式构造函数:
if (text.match(/^[\[\]\!\"\#\$\%\&\'\(\)\*\+\,\/\<\>\=\?\@\[\]\{\}\\\\\^\_\`\~]+$/)) {
this.specialChar = true;
} else {
this.specialChar = false;
}
失败的原因是您使用了正则表达式字符串构造函数。如果仍要这样做,则需要DOUBLE
逃脱字符,如下所示:
if (text.match('^[\\[\\]\\!\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\/\\<\\>\\=\\?\\@\\[\\]\\{\\}\\\\\\^\\_\\`\\~]+$')) {
现在,您将创建一个有效的正则表达式。