javascript - HTML代码条正则表达式问题

标签 javascript html regex

在 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/

相关文章:

javascript - 将多行字符串转换为javascript对象

javascript - 如何创建函数并传递 control-id 来显示/隐藏

jquery - Materialise CSS 删除禁用的输入字段不起作用

html - 在页面中心获取日期

javascript - 如何为所有实例设置相同的子组件动态宽度?网络组件

regex - Elixir中的RegEx捕获组

javascript - 如何在jquery中隐藏数据过滤器?

javascript - JavaScript 中的reduce 方法出现意外结果

用于替换文本箭头的 Javascript 正则表达式 -> <-

python - 对正则表达式输出执行简单的数学运算? (Python)