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

regular expression find end of string

本文关键字:结尾 字符串 查找 正则表达式      更新时间:2023-09-26

我有一个正则表达式的问题。

我想替换myData=xxxx&的所有位置xxxx可以更改,但总是以&结尾,除了最后一个位置,当它是myData=xxx时。

var data = "the text myData=data1& and &myData=otherData& and end myData=endofstring"
data.replace(/myData=.*?&/g,'newData');

它返回:

文本newData和&newData和end myData=endofstring

哪一个是正确的,但我如何检测最后一个呢?

两件事:

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

  2. 您可以使用交替|)来匹配&或字符串末尾

因此:

    var data = "the text myData=data1& and &myData=otherData& and end myData=endofstring"
    data = data.replace(/myData=.*?(?:&|$)/g,'newData');
//  ^^^^^^^-- 1                    ^^^^^^^-- 2
console.log(data);

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

关于:

data="myData=abc& and linked with something else";
data.replace(/myData=.*?&/g,'newData');

https://jsfiddle.net/ob8c2j9v/