繁体   English   中英

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

[英]Regex: how to get contents from tag inner (use javascript)?

页面内容:

aa<b>1;2'3</b>hh<b>aaa</b>..
 .<b>bbb</b>
blabla..

我想得到结果:

1;2'3aaabbb

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

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

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);

生产:

1;2'3aaabbb

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

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

例如(使用jQuery):

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

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

      var regex = /(<([^>]+)>)/ig;
      var bdy="aa<b>1;2'3</b>hh<b>aaa</b>..\n.<b>bbb</b>\nblabla..";

      var result =bdy.replace(regex, "");
      alert(result) ;

请参阅: http//jsfiddle.net/abdennour/gJ64g/

这是一个没有jQuery依赖的示例:

// get all elements with a certain tag name
var b = document.getElementsByTagName("B");

// map() executes a function on each array member and
// builds a new array from the function results...
var text = b.map( function(element) {
  // ...in this case we are interested in the element text
  if (typeof element.textContent != "undefined")
    return element.textContent; // standards compliant browsers
  else
    return element.innerText;   // IE
});

// now that we have an array of strings, we can join it
var result = text.join('');

只需使用'?' 如果要使用常规表达式,则为内部文本生成模式后的字符。 例如:

".*" to "(.*?)"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM