我使用了以下正则表达式来仅获取<b>
和</b>
标记之间的内容。
var bonly = defaultVal.match("<b>(.*?)</b>");
但它没有奏效。我没有得到正确的结果。我正在使用正则表达式的示例字符串:
<b>Item1</b>: This is item 1 description.
<b>Item1</b>: This is item 1 description.<b>Item2</b>: This is item 2 description.
<b>Item1</b>: <b>Item2</b>: This is item 2 description. <b>Item3</b>: This is item 3 description.<b>Item4</b>:
<b>Item1</b>: This is item 1 description.<b>Item2</b>: This is item 2 description. <b>Item3</b>: This is item 3 description.<b>Item4</b>:
此处项目名称是强制性的,但可能有描述或可能没有描述。
答案 0 :(得分:7)
为什么不跳过正则表达式并尝试...
var div = document.createElement('div');
div.innerHTML = str;
var b = div.getElementsByTagName('b');
for (var i = 0, length = b.length; i < length; i++) {
console.log(b[i].textContent || b[i].innerText);
}
答案 1 :(得分:2)
关于使用正则表达式来匹配HTML标签,这里有很多问题/答案。通过适当的搜索,你可以学到很多东西。
您可能希望首先将正则表达式转换为正则表达式:
var defaultVal = "<b>Item1</b>: This is item 1 description.";
var bonly = defaultVal.match(/<b>(.*?)<\/b>/);
if (bonly && (bonly.length > 1)) {
alert(bonly[1]); // alerts "Item1"
}
您可能还需要注意正则表达式不适合HTML匹配,因为HTML标记上的任意字符串可能包含可能真正搞乱正则表达式匹配的字符。此外,换行符可能是某些正则表达式引擎中的问题。进一步的资本化会让你感到困惑。此外,这里或那里的额外空间会让你感到困惑。其中一些可以用更复杂的正则表达式来解释,但它仍然可能不是最好的工具。
根据您尝试执行的操作的上下文,使用此HTML创建实际的HTML对象可能更容易(让浏览器执行所有复杂的解析),然后使用DOM访问方法获取您想要的信息
答案 2 :(得分:1)
试试这个正则表达式
var bonly = defaultVal.match(/<([A-z0-9]*)\b[^>]*>(.*?)<\/\1>/)