Javascript заменяет несколько символов, включая «/» - PullRequest
0 голосов
/ 14 июня 2011

Я использую этот фрагмент для замены нескольких символов в строке.

var badwords = eval("/foo|bar|baz/ig");
var text="foo the bar!";
document.write(text.replace(badwords, "***"));

Но одним из символов, которые я хочу заменить, является '/'.Я предполагаю, что это не работает, потому что это зарезервированный символ в регулярных выражениях, но как я могу это сделать тогда?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 14 июня 2011

Вы просто экранируете "зарезервированный" символ в вашем RegExp:

var re = /abc\/def/;

Возможно, у вас возникли проблемы с этим, потому что вы по какой-то причине используете строку в качестве вашего RegExp, а затем ее проверяете...so odd.

var badwords = /foo|bar|baz/ig;

- это все, что вам нужно.

Если вы INISIST при использовании строки, вам нужно сбежать, если вы сбежали:

var badwords = eval( "/foo|ba\\/r|baz/ig" );

Это возвращает обратную косую черту через интерпретатор JS, чтобы добраться до механизма RegExp.

1 голос
/ 14 июня 2011

сначала НЕ ИСПОЛЬЗУЙТЕ EVAL, это самая злая функция, когда-либо существовавшая и совершенно ненужная здесь

var badwords = /foo|bar|baz/ig;

работает так же хорошо (или использует конструктор new RegExp("foo|bar|baz","ig");)

и когда вы хотите иметь / в регулярном выражении и \ перед символом, которого хотите убежать

var badwords = /\/foo|bar|baz/ig;
//or
var badwords = new RegExp("\\/foo|bar|baz","ig");//double escape to escape the backslash in the string like one has to do in java
...