我有一个如下所示的字符串...
var1=val1 var2=val2 var3="p1 p2 p3 p4" var4="p1 p2" var5=val5
现在我怎样才能替换所有white spaces
与 underscore
仅在内部 ""
使用 RegExp 使字符串如下所示...
var1=val1 var2=val2 var3="p1_p2_p3_p4" var4="p1_p2" var5=val5
这样通过使用.replace('"','').split(' ')
,我可以获得如下所示的数组...
Array(
var1: "val1",
var2: "val2",
var3: "p1_p2_p3_p4",
var4: "p1_p2",
var5: "val5"
)
请不要使用 jQuery...
最佳答案
我知道这个问题已经得到解答,但我想我应该使用积极的前瞻来分享这个正则表达式。这允许您在不使用回调的情况下替换
。
var str = 'var1=val1 var2=val2 var3="p1 p2 p3 p4" var4="p1 p2" var5=val5';
str = str.replace(/\s(?=[^=]*")/g, '_');
解释一下:
\s match a space...
(?= start of positive look-ahead
[^=]*" ...which is followed by anything except an =, up to a double-quote
) end of positive look-ahead
然后g
将重复搜索
关于JavaScript 正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13487508/