正则表达式查找字符串的结尾

cuc*_*uru 3 javascript regex

我有一个正则表达式的麻烦.

我想替换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

这是正确的,但我怎么能检测到最后一个?

T.J*_*der 5

两件事情:

  1. 你需要在replace某个地方分配你在问题代码中没有做的结果

  2. 您可以使用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)

注意使用非捕获组((?:...))来限制交替的范围.