RegEx返回SyntaxError:无效的正则表达式:/ * /:无需重复

时间:2015-07-24 13:24:34

标签: javascript regex

var unicode = ['!', '@', '%', '$', '#', '^', '&', '*', '(', ')', '-', '_', '+', '=', '{', '}', '[', ']', '\\', '|', ':', ';', '\'', '"', ',', '<', '>', '.', '/', '?', '~', '`'];
var removeunicode = "my message!!@!(@^!@&(*";
for (var i = 0; i < unicode.length; i++) {
    removeunicode = removeunicode.replace(new RegExp(unicode[i], 'g'), "");
}

不知道这里的问题是什么,看起来非常好,基本上它从我放的消息中剥离了所有的unicode,而RegExp似乎在乱搞我给我

SyntaxError:无效的正则表达式:/ * /:无需重复

任何人都可以帮助我吗? :)

1 个答案:

答案 0 :(得分:0)

您需要转义这些特殊字符,但您可以像

一样编写它

&#13;
&#13;
if (!RegExp.escape) {
  RegExp.escape = function(value) {
    return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
  };
}


var unicode = ['!', '@', '%', '$', '#', '^', '&', '*', '(', ')', '-', '_', '+', '=', '{', '}', '[', ']', '\\', '|', ':', ';', '\'', '"', ',', '<', '>', '.', '/', '?', '~', '`'];
var removeunicode = "my message!!@!(@^!@&(*";

var regex = new RegExp(unicode.map(function(val) {
  return RegExp.escape(val);
}).join('|'), 'g');
removeunicode = removeunicode.replace(regex, "");
snippet.log(removeunicode);
&#13;
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;