1

文字=abc "def" g'i' jklm'no' p"qrs uv w"

应该成为abc !string! g !string! jklm!string! p !string!

到目前为止我所拥有的:

if(/(?:'[^']+'|"[^"]+")/.test(text){
   text = text.replace(/(?:'[^']+'|"[^"]+")/, "!string!");
}   

(杰瑞的回答)

它只替换第一次出现的用 '' 或 "" 括起来的文本。这实际上与我之前的问题有关,但我认为这更复杂:如何在正则表达式中搜索 ' 或 " 的第二次出现?

4

4 回答 4

2

g修饰符执行全局匹配

text = text.replace(/(?:'[^']+'|"[^"]+")/g, "!string!");
于 2013-08-21T09:57:40.577 回答
2

试试这个

str = "abc \"def\" g'i' jklm'no' p\"qrs uv w\"";
mystring = str.replace(/("|')+[a-z ]+("|')/g, '!sring!');
alert(mystring);

输出

abc !string! g !string! jklm!string! p !string!
于 2013-08-21T10:07:52.150 回答
0

使用全局参数“g”

str.replace(/blue/g,"red");
于 2013-08-21T09:57:03.723 回答
0

这个怎么样

var str = "abc \"def\" g'i' jklm'no' p\"qrs uv w\"";
var regexp = /("|')[a-z ]+("|')/g;
console.log(str.replace(regexp,'!string!'));

正则表达式结果

结果:abc !string! g!string! jklm!string! p!string!

于 2013-08-21T10:02:21.220 回答