【发布时间】:2010-04-12 14:45:40
【问题描述】:
页面内容:
aa<b>1;2'3</b>hh<b>aaa</b>..
.<b>bbb</b>
blabla..
我想得到结果:
1;2'3aaabbb
匹配标签是<b> 和</b>
如何使用 javascript 编写这个正则表达式? 谢谢!
【问题讨论】:
标签: javascript html regex
页面内容:
aa<b>1;2'3</b>hh<b>aaa</b>..
.<b>bbb</b>
blabla..
我想得到结果:
1;2'3aaabbb
匹配标签是<b> 和</b>
如何使用 javascript 编写这个正则表达式? 谢谢!
【问题讨论】:
标签: javascript html regex
Lazyanno,
当且仅当:
SLaks 的帖子(以及previous article he links to),并且<b>/</b> 标签或出现 @ 987654326@或</b>内<script>...</script>或评论<!-- .. -->标签等)...然后使用:
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
【讨论】:
You cannot parse HTML using regular expressions.
相反,您应该使用 Javascript 的 DOM。
例如(使用 jQuery):
var text = "";
$('<div>' + htmlSource + '</div>')
.find('b')
.each(function() { text += $(this).text(); });
我将 HTML 包装在 <div> 标记中以查找嵌套和非嵌套 <b> 元素。
【讨论】:
SLaks建议
这里是一个没有 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('');
【讨论】:
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) ;
【讨论】:
只需使用“?”如果您想使用正则表达式,则在您的内部文本生成模式之后的字符。 例如:
".*" to "(.*?)"
【讨论】: