Javascript 正则表达式从给定字符串中提取部分文本

Javascript 正则表达式从给定字符串中提取部分文本,javascript,html,regex,Javascript,Html,Regex,我正在学习正则表达式,我想实现这样的目标 我有一个字符串如下 1. https://www.example.com/abc23?xyz&mnop=12ab&productid=qwerty123 2. https://www.example.com/abc23?xyz&mnop=12ab&productid=hai456&someAlphaNumeric=0987 3. https://www.example.com/abc23?xyz&mnop=

我正在学习正则表达式,我想实现这样的目标

我有一个字符串如下

1. https://www.example.com/abc23?xyz&mnop=12ab&productid=qwerty123
2. https://www.example.com/abc23?xyz&mnop=12ab&productid=hai456&someAlphaNumeric=0987
3. https://www.example.com/abc23?xyz&mnop=12ab&productid=bye789&asdf=0987
现在我想从URL中获取包含“&”的productid参数

这是预期的输出

1. &productid=qwerty123
2. &productid=hai456
3. &productid=bye789
您可以直接匹配“&productid=”,但其余部分是可变的。要匹配任何单词字符,请使用“\w+”(“+”至少匹配一个或多个),如“&productid=\w+”&”不会匹配,因为这是一个特殊字符。”\w'仅需[a-zA-Z0-9]

最后的正则表达式是:&productid=\w+


这将符合你的需要。请记住,这只是一种方法,也可以使用其他正则表达式来获得相同的结果。

这样做:
&productid=.*?(?=[&\n]|$)

  • &productid=
    将与确切文本匹配&productid=
  • *?
    将延迟匹配除新行以外的任何内容(即尽可能少的字符数)
  • (?=[&\n]|$)
    是对
    &
    符号、新行或字符串结尾的积极展望


请添加您尝试过的内容和无效的内容。不要使用regexp解析URL。使用URL库。查看。您的正则表达式与最后一个字符再匹配一次(在捕获组1中)。是的,它再次捕获了最后一个字符。修改了正则表达式,现在它可以正常工作,而且更简单。检查实时示例。
&productid=ha()i456
这应该是匹配的。但事实并非如此。产品id不会有()。这将是文字和数字,我们不知道。OP在帖子中从未表达过这一点。
const regex = /&productid=.*?(?=[&\n]|$)/g;
const str = `
https://www.example.com/abc23?xyz&mnop=12ab&productid=qwerty123
https://www.example.com/abc23?xyz&mnop=12ab&productid=hai456&someAlphaNumeric=0987
https://www.example.com/abc23?xyz&mnop=12ab&productid=bye789&asdf=0987`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }

    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}