Как избежать специальных символов регулярного выражения с помощью 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