Как избежать специальных символов регулярного выражения с помощью javascript?

Мне нужно избежать специальных символов регулярного выражения, используя java script. Как я могу это достичь? Любая помощь должна быть оценена.


Спасибо за ваш быстрый ответ. Но мне нужно избегать всех специальных символов регулярного выражения. Я пробовал этот код, но я не могу добиться результата.

RegExp.escape=function(str)
            {
                if (!arguments.callee.sRE) {
                    var specials = [
                        '/', '.', '*', '+', '?', '|',
                        '(', ')', '[', ']', '{', '}', '\\'
                    ];
                    arguments.callee.sRE = new RegExp(
                    '(\\' + specials.join('|\\') + ')', 'gim'
                );
                }
                return str.replace(arguments.callee.sRE, '\\$1');

            }

function regExpFind() {
            <%--var regex = new RegExp("\\[munees\\]","gim");--%>
                    var regex= new RegExp(RegExp.escape("[Munees]waran"));
                    <%--var regex=RegExp.escape`enter code here`("[Munees]waran");--%>
                    alert("Reg : "+regex);
                }

Что я не так с этим кодом? Пожалуйста, помогите мне.

Ответ 1

Используйте символ \, чтобы избежать символа, который имеет особое значение внутри регулярного выражения.

Чтобы автоматизировать его, вы можете использовать это:

function escapeRegExp(text) {
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
}

Обновление: В настоящее время предлагается стандартизировать этот метод, возможно, в ES2016: https://github.com/benjamingr/RegExp.escape p >

Обновление. Вышеупомянутое предложение было отклонено, поэтому продолжайте выполнять его самостоятельно, если вам это нужно.

Ответ 2

Используйте обратную косую черту, чтобы избежать символа. Например:

/\\d/

Это будет соответствовать \d вместо числового символа

Ответ 3

С \ вы выходите из специальных символов

Сбрасывает специальные символы в литеральные и литературные символы.

Например:/(s)/matches '(s)' while/(\ s)/соответствует любому пробелу и фиксирует соответствие.

Источник: http://www.javascriptkit.com/javatutors/redev2.shtml