正则表达式:如何从标签内部获取内容(使用javascript)?

Koe*_*err 5 html javascript regex

页面内容:

aa<b>1;2'3</b>hh<b>aaa</b>..
 .<b>bbb</b>
blabla..
Run Code Online (Sandbox Code Playgroud)

我想得到结果:

1;2'3aaabbb
Run Code Online (Sandbox Code Playgroud)

匹配标记是<b></b>

如何使用javascript编写此正则表达式?谢谢!

vla*_*adr 9

Lazyanno,

当且仅当:

  1. 你已经阅读了SLaks帖子(以及他链接到上一篇文章),以及
  2. 你充分了解纷繁奇妙的方法,其中利用HTML中提取信息的正则表达式可以打破,并
  3. 确信没有任何问题适用于您的情况(例如,您可以保证您的输入永远不会包含嵌套,不匹配的等<b>/ </b>标签或出现<b></b>内部<script>...</script>或评论<!-- .. -->标签等)
  4. 绝对和积极地想要进行正则表达式提取

...然后使用:

var str = "aa<b>1;2'3</b>hh<b>aaa</b>..\n.<b>bbb</b>\nblabla..";

var match, result = "", regex = /<b>(.*?)<\/b>/ig;
while (match = regex.exec(str)) { result += match[1]; }

alert(result);
Run Code Online (Sandbox Code Playgroud)

生产:

1;2'3aaabbb
Run Code Online (Sandbox Code Playgroud)


SLa*_*aks 8

无法使用正则表达式解析HTML.

相反,你应该使用Javascript的DOM.

例如(使用jQuery):

var text = "";
$('<div>' + htmlSource + '</div>')
    .find('b')
    .each(function() { text += $(this).text(); });
Run Code Online (Sandbox Code Playgroud)

我将HTML包装在<div>标记中以查找嵌套和非嵌套<b>元素.

  • 对于记录,您不能**使用正则表达式可靠地**解析HTML.如果满足某些条件,则可以使用正则表达式从格式良好的(X)HTML中提取信息*. (3认同)