在 javascript 中,一种流行的正则表达式是从文本中去除 HTML 标记。代码是
String.prototype.stripHTML = function () {
var reTag = /<(?:.|\s)*?>/g;
return this.replace(reTag, "");
};
如果你在 "<b>This would be bold</b>".stripHTML()
上尝试这个, 然后输出为 "This would be bold"
.它不应该输出为""
吗? ?
这个正则表达式不是说匹配以 <
开头的所有内容吗?并以 >
结尾?为什么这个正则表达式不是从 <
开始的?的 <b>
结束于 >
的 </b>
最佳答案
您正在使用 non-greedy修饰符。
(?:.|\s)*?
^
这会导致匹配尽可能短,而不是默认匹配尽可能长的匹配。
<b>This would be bold</b> ^-^ ^--^ Non-greedy: <(?:.|\s)*?> ^-----------------------^ Greedy : <(?:.|\s)*>
关于javascript - HTML代码条正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646098/