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

не знает, что проблема здесь, выглядит прекрасно, в основном его зачистки всего Юникода от послания, которое я поставил, и RegExp, похоже, Мессинг вокруг со мной дает мнеRegEx возвращение SyntaxError: Недопустимое регулярное выражение:/* /: Ничего повторить

SyntaxError: Invalid регулярное выражение:/* /: Ничего не повторять

кто-нибудь может мне помочь? :)

+1

Почему вы назвали свой массив «Юникод», когда все символы внутри находятся в ASCII Таблица? –

ответ

0

Вы должны избежать этих специальных символов, но вы можете написать его как

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

 

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

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

Смежные вопросы