我正在尝试删除所有以下划线结尾的类名。所以:
<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文档并删除&#34; bad&#34;整个文件中的类名......
答案 0 :(得分:2)
我尝试了/[^\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, '') + "\"";
});
行动中的小提琴:click
我希望有所帮助。