javascript - 正则表达式用 html 文档中的 JavaScript 替换某些类名

标签 javascript regex node.js

我试图删除所有以下划线结尾的类名。所以:

<div class="foo bar_ baz boo_ fa"> </div>

将输出:

<div class="foo baz fa"> </div>

我正在尝试在 JavaScript 中执行此操作,到目前为止,如果输入仅包含字符串而不包含其他内容,我可以做到这一点:

```Node.js
var input = "foo bar_ baz boo_ fa";
input = input.replace(/(\w*[^ ])(?=_)(_)/g, "");

输出:

foo  baz  fa

我猜测我没有正确使用前瞻。我希望我可以这样:

input = input.replace(/class\s*=\s*["'](\w*[^ ])(?=_)(_)/g, "");

计划的总体目标:

该脚本的目的是读取 html 文档并从整个文档中删除“坏”类名...

最佳答案

我尝试了 /[^\s]+_(?: +|$)/g ,它匹配任何以下划线结尾的类和所有尾随空格(如果有的话)。这应该适用于您的替换。

编辑: 由于你的字符串比我想象的更复杂,所以试试这个。

//get our test string
var input = "<div style=\"crazy_omg nowai_    \" class = \"bar_ baz boo1_              fa fsfs_ joined_name joined-name  \"></div><input class= \"eh_\" CLASS ='WUT_ WINSD_ SKJDJASD_Jkzsd' class=ok_    bugs='existing' class=biiii_ /> <div class=fndjkdf /> <span style='color:red' class=jkndndfd_ /></span></div>",
//build our regular expressions
attrMatcher = /(?:class *= *[\'\"]{0,1})((?:[\w -](?!\w+=|\/))+)[\'\"]*/gi,
classMatcher = /[^\s]+_(?: +|$)/g;

//if we find a class, check it for errors
var result = input.replace(attrMatcher, function(full, capture){
    //remove errors and return
    return "class=\""+capture.replace(classMatcher, '') + "\"";
});

实际操作中的 fiddle :click

希望对您有所帮助。

关于javascript - 正则表达式用 html 文档中的 JavaScript 替换某些类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27235982/

相关文章:

javascript - 为什么它显示 Nodejs 的待处理 promise

c# - javascript:根据计数器是奇数还是偶数来切换两个字符串的最佳方法

多种货币的 Javascript 正则表达式

javascript - 更新数据库后返回更新的对象而不是计数

regex - 匹配空格但不匹配换行符

java - JAVA中带有千位分隔符的小数点8,2的正则表达式

arrays - 无法将 JSON 对象转换为全局数组

javascript - 从 PHP 或 Javascript 加载 HTML?

javascript - 如何将JS对象传递给redis中它自己的事件参数 - 连接事件上的sentinel

javascript - 如何将现有文本片段放入新创建的元素节点中?