我有一个字符串,其中包含多行文本。在该字符串中,我需要使用正则表达式获取三个值。我能够获取前两个值。但是我无法获取第三个值。当我们有动态标签时,是否可以有人帮助我教我更好地使用正则表达式进行解释的方法。
字符串:
<input type='radio' class="radio" id="bb_radio1266767" name='266' value='767' onclick="show(document.forms[0],window.pageNumber)" />
<!-- Start template -->
</td>
<td class="col_info ">
<label for="bb_radio1266767">
<!-- Start baseProductInfo/displayBaseProductName.ftl-->
Essential
在上面的String中,我需要获取 Essential 值,该文本将始终出现在边标记中。在该文本之前,我可能有多个标签。
请在这里帮助
答案 0 :(得分:0)
第一种(也是更好的方法)是使用属性.textContent
:
document.querySelector('.col_info').textContent;
第二种方法是使用正则表达式方法.exec()
const rgx = /Essential/g; let res = rgx.exec(str2); while (res !== null) { console.log('Using regex.exec(): ' + res[0]); res = rgx.exec(str2); }
您需要有效的HTML才能使用.textContent
。我假设您的真实页面具有有效的HTML,所以更正了表格和标签。对于.exec()
,我使用文字HTML并将其转换为字符串(只需用反引号 ` 换行)。当然,这是假设您是手动执行的。
const str1 = document.querySelector('.col_info').textContent;
console.log('Using .textContent: ' + str1.trim());
const str2 = `<input type='radio' class="radio" id="bb_radio1266767" name='266' value='767' onclick="show(document.forms[0],window.pageNumber)" />
<!-- Start template -->
</td>
<td class="col_info ">
<label for="bb_radio1266767">
<!-- Start baseProductInfo/displayBaseProductName.ftl-->
Essential`;
const rgx = /Essential/g;
let res = rgx.exec(str2);
while (res !== null) {
console.log('Using regex.exec(): ' + res[0]);
res = rgx.exec(str2);
}
<table>
<tr>
<td>
<input type='radio' class="radio" id="bb_radio1266767" name='266' value='767' onclick="show(document.forms[0],window.pageNumber)" />
<!-- Start template -->
</td>
<td class="col_info ">
<label for="bb_radio1266767">
<!-- Start baseProductInfo/displayBaseProductName.ftl-->
Essential
</label>
</td>
</tr>
</table>