我正在尝试从下面提供的代码中提取id的值
我尝试了以下正则表达式,但仍以默认值id_not_found
的形式返回id” selectNOIOrg_do_frm_organization =“(。+?)” />
<input type="radio" name="frm.organization" id="selectNOIOrg_do_frm_organization{C5DF28FD-26EF-90DA-1214-BD72E0214F17}" value="{C5DF28FD-26EF-90DA-1214-BD72E0214F17}" title="College of St. Jude" ext-ns-multiple="frmorganization">
我希望正则表达式提取器能够识别ID(它是动态ID,并且会根据所选的单选按钮进行更改)
答案 0 :(得分:0)
在这里,我们可能只想将id="
作为左边界,将"
作为右边界,然后在第一个捕获组$1
中收集我们的属性值,可能类似于:
id="(.+?)"
此代码段仅显示捕获组的工作方式:
const regex = /id="(.+?)"/gm;
const str = `<input type="radio" name="frm.organization" id="selectNOIOrg_do_frm_organization{C5DF28FD-26EF-90DA-1214-BD72E0214F17}" value="{C5DF28FD-26EF-90DA-1214-BD72E0214F17}" title="College of St. Jude" ext-ns-multiple="frmorganization">
`;
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}`);
});
}
如果不需要此表达式,可以在regex101.com中对其进行修改或更改。
jex.im可视化正则表达式:
答案 1 :(得分:0)
如果ID 前的字符串可以更改,则可以使用id="\w+{([A-Z0-9-]+)}"
。
如果id之前的字符串总是 或存在多个类似的id字符串,而您只想这个特定的字符串使用`
let html = '<input type="radio" name="frm.organization" id="selectNOIOrg_do_frm_organization{C5DF28FD-26EF-90DA-1214-BD72E0214F17}" value="{C5DF28FD-26EF-90DA-1214-BD72E0214F17}" title="College of St. Jude" ext-ns-multiple="frmorganization">';
let rgx = /id="(selectNOIOrg_do_frm_organization{([A-Z0-9-]+)})"/;
var result = rgx.exec(html);
if (result) {
alert('regex matched:\n\nfull-id=' + result[1] + '\n\nvalue=' + result[2]);
} else {
alert('regex does not match');
}
`
要仅将GUID匹配为ID,可以使用id="selectNOIOrg_do_frm_organization{([A-Z0-9-]{8}-[A-Z0-9-]{4}-[A-Z0-9-]{4}-[A-Z0-9-]{4}-[A-Z0-9-]{12})}"
答案 2 :(得分:0)
在您尝试过id" selectNOIOrg_do_frm_organization="(.+?)" />
的模式中,您可以进行以下更改:
id"
应该是id="
,organization="
应该是organization{
,并且您可以删除/>
您可以保留(.+?)
,但也可以使用否定的字符类来防止不必要的回溯。
您可以使用匹配项{
,然后使用捕获组并使用否定的字符类([^{}\n]+)
匹配内部内容,然后再次匹配}
:
id="selectNOIOrg_do_frm_organization{([^{}\n]+)}"