javascript - 正则表达式组捕获

标签 javascript regex

<分区>

我有一封标准电子邮件,我希望从中提取某些详细信息。

邮件中有这样几行:

<strong>Name:</strong> John Smith

因此,为了模拟这一点,我有以下 JavaScript:

var str = "<br><strong>Name:</strong> John Smith<br>";
var re = /\<strong>Name\s*:\<\/strong>\s*([^\<]*)/g
match = re.exec(str);
while (match != null) {
    console.log(match[0]);
    match = re.exec(str);
}

这只会得出一个结果,即:

<strong>Name:</strong> John Smith

我希望得到捕获组 ([^\<]*)在本例中为 John Smith

我在这里错过了什么?

最佳答案

在正则表达式中,第一个匹配项始终是匹配的整个字符串。使用组时,您会从第 1 组开始进行匹配,因此要解决您的问题,只需将 match[0] 替换为 match[1]

也就是说,由于您使用的是 JavaScript,因此最好处理 DOM 本身并从中提取文本,而不是使用正则表达式处理 HTML。

关于javascript - 正则表达式组捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57460879/

相关文章:

regex - 将 powershell 正则表达式捕获到表中

javascript - Yii Ajax 点击

javascript - GWT - 仅在 Internet Explorer 中设置 document.domain 时出现 "Access is Denied"JavaScript 错误

javascript - 如何在 ajax 调用后更改包装器 JavaScript 函数中的全局变量?

c++ - c++11中正则表达式的使用

java - 从字符串中删除斜体和粗体 html 标签?

正则表达式 - 十进制数中的可选点

javascript - 表示为 javascript 坐标数组的多边形联合

javascript - 为输入文件表单设置默认值

python - 检查字符串数据帧python中的任何位置是否存在 '?'