我有一个正则表达式的麻烦.
我想替换myData=xxxx&xxxx可以改变的所有发生,但总是结束&,除了最后一次发生,它是什么时候myData=xxx.
var data = "the text myData=data1& and &myData=otherData& and end myData=endofstring"
data.replace(/myData=.*?&/g,'newData');
Run Code Online (Sandbox Code Playgroud)
它返回:
文本newData和&newData并结束myData = endofstring
这是正确的,但我怎么能检测到最后一个?
两件事情:
你需要在replace某个地方分配你在问题代码中没有做的结果
您可以使用alternation(|)匹配&字符串的一个或结尾
所以:
var data = "the text myData=data1& and &myData=otherData& and end myData=endofstring"
data = data.replace(/myData=.*?(?:&|$)/g,'newData');
// ^^^^^^^-- 1 ^^^^^^^-- 2
console.log(data);Run Code Online (Sandbox Code Playgroud)
注意使用非捕获组((?:...))来限制交替的范围.