在RegExp访问匹配的文本

时间:2017-02-28 15:12:42

标签: javascript regex

我想在我的正则表达式中转义:white space。我试过了:

var re = new RegExp(':| ', 'g');   
var result = $(this).attr("id").replace(re, '\\${1}');

然而它并不起作用。这就是我想要做的事情:

Jack Kerouac => Jack\\ Kerouac 
Albert:Camus => Albert\\:Camus

我该怎么做?

3 个答案:

答案 0 :(得分:1)

由于\\\\生成单斜杠($& to get the match within the string),因此大括号不需要使用one slash is for escaping 并使用\\进行双斜杠。< / p>

.replace(re, '\\$&');

&#13;
&#13;
var str = `Jack Kerouac
Albert:Camus`;
var re = new RegExp(':| ', 'g');

console.log(str.replace(re, '\\$&'));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以直接使用模式而不是使用RegExp对象进行实例化。 还\\ - &gt;生成一个\(转义),添加\\\\

&#13;
&#13;
var re = /\:|\s/g;  
var val1="fname lname";
var val2="fname:lname";
console.log(val1.replace(re,'\\\\$&'));
console.log(val2.replace(re,'\\\\$&'));
&#13;
&#13;
&#13;

答案 2 :(得分:1)

这会捕获多​​个空格字符:

s.replace( \(:| )+\g, '\\\\' )

您可以在此处使用更多选项 - https://regex101.com/r/WW67KE/1