javascript - 如何在 JavaScript 中使用带有 'g' 选项的正则表达式仅提取分组文本

标签 javascript regex

假设我有一个像这样的网址:

url = http://www.example.com/listing.html?pid=1234&pid=1235&pid=1236

如何使用正则表达式仅提取“pid=”之后的值,而不使用正则表达式提取文本本身。

这是我的正则表达式现在的样子:

url.match(/pid=(\w+)/g)

给出以下输出:

["pid=1234", "pid=1235", "pid=1236"]

但我想得到这样的:

["1234", "1235", "1236"]

如果我在这里做错了什么,请纠正我。

最佳答案

简单的解决方案是:

url.match(/(?<=pid=)(\d+)/g);

但是,由于 Javascript 不支持lookbehind,因此您需要循环遍历结果:

var results = [];
url.match(/pid=(\d+)/g).forEach(function(result) { 
    results.push(result.replace('pid=', '')); 
});

console.log(results); // ["1234", "1235", "1236"]

关于javascript - 如何在 JavaScript 中使用带有 'g' 选项的正则表达式仅提取分组文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970730/

相关文章:

javascript - 为什么家长不听 child 在 Angular 上的讲话?

javascript - SVG <pattern> 由 Javascript 生成时不会加载

正则表达式获取大写章节标题之间的文本

javascript - 正则表达式匹配 [] 但不匹配\[\]

javascript - 使用正则表达式提取 javascript 中的特定标签格式

javascript正则表达式来验证十进制数据类型

javascript - 单击按钮时如何使用 Ajax 打开弹出表单提交?

javascript - 根据多个属性对对象数组进行排序

javascript - 通过 Websocket() 连接到 socket.io 服务器时不起作用

javascript - 这两个说法是什么意思?