function addSlashes(str) { str = str.replace(/\[/g, '\\['); str = str.replace(/\\/g, '\\\\'); str = str.replace(/\^/g, '\\^'); str = str.replace(/\$/g, '\\$'); str = str.replace(/\|/g, '\\|'); str = str.replace(/\?/g, '\\?'); str = str.replace(/\*/g, '\\*'); str = str.replace(/\+/g, '\\+'); str = str.replace(/\./g, '\\.'); str = str.replace(/\(/g, '\\('); str = str.replace(/\)/g, '\\)'); return str; }
|
3 answers
Everything has already been decided in the English version: https://stackoverflow.com/a/3561711/1016033
RegExp.escape = function(s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); };
|
You can collect everything in one expression and specify the group number
function addSlashes(str) { return str.replace(/(\[|\\|\^|\$|\||\?|\*|\+|\.|\(|\))/g, '\\$1'); } console.log(addSlashes('.*'));
|
function addSlashes(str) { // Сливаем все регулярки в одну // Сохраняем спец. символ в группу и экранируем его return str.replace(/(\[|\\|\^|\$|\||\?|\*|\+|\.|\(|\))/g, "\\$1"); } console.info(addSlashes('some[\\T^Q$I|K?H*N+BP()]'));
|
RegExp.escape
right in the answer + link is the answer. Just a link to "here's a great solution!" - not the answer. - PashaPash ♦