用于提取属性值的正则表达式
RegEx for extracting an attribute value
我正在尝试从下面提供的代码中提取 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,会根据所选的单选按钮而变化)
这里,我们可能只想以id="
为左边界,"
为右边界,然后在第一个捕获组</code>中收集我们的属性值:</p>
<pre><code>id="(.+?)"
DEMO
演示
这段代码只是展示了捕获组的工作原理:
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 可视化正则表达式:
您可以使用 id="\w+{([A-Z0-9-]+)}"
,如果 id
之前的字符串可以 更改。
如果 id
之前的字符串 总是相同的 或者有多个 id-strings 这样的字符串而你只想要 这个具体一个使用`
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})}"
在您尝试的模式中 id" selectNOIOrg_do_frm_organization="(.+?)" />
您可以进行以下更改:
id"
应该是 id="
,organization="
应该是 organization{
你可以去掉 />
您可以保留 (.+?)
,但您也可以使用否定字符 class 来防止不必要的回溯。
您可以使用匹配 {
,然后使用捕获组并使用取反字符 class ([^{}\n]+)
匹配其中的内容,然后再次匹配 }
:
id="selectNOIOrg_do_frm_organization{([^{}\n]+)}"
我正在尝试从下面提供的代码中提取 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,会根据所选的单选按钮而变化)
这里,我们可能只想以id="
为左边界,"
为右边界,然后在第一个捕获组</code>中收集我们的属性值:</p>
<pre><code>id="(.+?)"
DEMO
演示
这段代码只是展示了捕获组的工作原理:
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 可视化正则表达式:
您可以使用 id="\w+{([A-Z0-9-]+)}"
,如果 id
之前的字符串可以 更改。
如果 id
之前的字符串 总是相同的 或者有多个 id-strings 这样的字符串而你只想要 这个具体一个使用`
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})}"
在您尝试的模式中 id" selectNOIOrg_do_frm_organization="(.+?)" />
您可以进行以下更改:
id"
应该是 id="
,organization="
应该是 organization{
你可以去掉 />
您可以保留 (.+?)
,但您也可以使用否定字符 class 来防止不必要的回溯。
您可以使用匹配 {
,然后使用捕获组并使用取反字符 class ([^{}\n]+)
匹配其中的内容,然后再次匹配 }
:
id="selectNOIOrg_do_frm_organization{([^{}\n]+)}"