正则表达式用html文档中的JavaScript替换某些类名
我试图删除所有以下划线结尾的类名。因此:正则表达式用html文档中的JavaScript替换某些类名,javascript,regex,node.js,Javascript,Regex,Node.js,我试图删除所有以下划线结尾的类名。因此: <div class="foo bar_ baz boo_ fa"> </div> 产出: foo baz fa 我猜我没有正确使用“向前看”。我希望我能像这样: input=input.replace(/class\s*=\s*[“”](\w*[^])(?=\ug)(); 计划的总体目的: 脚本的目的是读取html文档并从整个文档中删除“坏”类名…我尝试了/[^\s]+\u(?:+$)/g,它匹配任何以下划线结尾的类和所
<div class="foo bar_ baz boo_ fa"> </div>
产出:
foo baz fa
我猜我没有正确使用“向前看”。我希望我能像这样:
input=input.replace(/class\s*=\s*[“”](\w*[^])(?=\ug)();
计划的总体目的:
脚本的目的是读取html文档并从整个文档中删除“坏”类名…我尝试了/[^\s]+\u(?:+$)/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, '') + "\"";
});
//获取我们的测试字符串
var输入=”,
//构建我们的正则表达式
attrMatcher=/(?:class*=*[\'\“]{0,1})((?:[\w-](?!\w+=\/)+)[\'\“]*/gi,
classMatcher=/[^\s]+(?:+|$)/g;
//如果我们找到一个类,检查它是否有错误
var result=input.replace(属性匹配器、函数(完整、捕获){
//删除错误并返回
返回“class=\”“+capture.replace(classMatcher)”)+“\”;
});
行动中的小提琴:
我希望这会有所帮助。我尝试了/[^\s]+\u(?:++$)/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, '') + "\"";
});
//获取我们的测试字符串
var输入=”,
//构建我们的正则表达式
attrMatcher=/(?:class*=*[\'\“]{0,1})((?:[\w-](?!\w+=\/)+)[\'\“]*/gi,
classMatcher=/[^\s]+(?:+|$)/g;
//如果我们找到一个类,检查它是否有错误
var result=input.replace(属性匹配器、函数(完整、捕获){
//删除错误并返回
返回“class=\”“+capture.replace(classMatcher)”)+“\”;
});
行动中的小提琴:
我希望这会有所帮助。我尝试了/[^\s]+\u(?:++$)/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, '') + "\"";
});
//获取我们的测试字符串
var输入=”,
//构建我们的正则表达式
attrMatcher=/(?:class*=*[\'\“]{0,1})((?:[\w-](?!\w+=\/)+)[\'\“]*/gi,
classMatcher=/[^\s]+(?:+|$)/g;
//如果我们找到一个类,检查它是否有错误
var result=input.replace(属性匹配器、函数(完整、捕获){
//删除错误并返回
返回“class=\”“+capture.replace(classMatcher)”)+“\”;
});
行动中的小提琴:
我希望这会有所帮助。我尝试了/[^\s]+\u(?:++$)/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, '') + "\"";
});
//获取我们的测试字符串
var输入=”,
//构建我们的正则表达式
attrMatcher=/(?:class*=*[\'\“]{0,1})((?:[\w-](?!\w+=\/)+)[\'\“]*/gi,
classMatcher=/[^\s]+(?:+|$)/g;
//如果我们找到一个类,检查它是否有错误
var result=input.replace(属性匹配器、函数(完整、捕获){
//删除错误并返回
返回“class=\”“+capture.replace(classMatcher)”)+“\”;
});
行动中的小提琴:
我希望这能有所帮助。你为什么要使用lookahead?我不太擅长正则表达式,只是想找到一种简单的方法来匹配结尾字符,而我能想到的唯一方法就是在一段孤立的字符串上使用lookahead。我想我不应该使用它……你为什么要使用lookahead?我不太擅长正则表达式我只是想找到一种简单的方法来匹配一个结束字符,而我唯一能想到的方法就是对一段孤立的字符串进行前瞻。我想我不应该使用它……你为什么要使用前瞻呢?我不太擅长正则表达式,只是想找到一种简单的方法来匹配一个结束字符,等等我唯一能想到的方法是在一段孤立的字符串上使用lookahead。我想我当时不应该使用它……你为什么要使用lookahead呢?我不太擅长正则表达式,只是想找到一种简单的方法来匹配一个结束字符,我唯一能想到的方法是在一段孤立的字符串上使用lookahead。我我想我不应该使用它……有没有办法让它不那么贪婪,因为例如,如果输入是:
,那么输出就会变成,我想因为没有办法知道输入中可能有哪些属性,或者即使每个检查只有一个输入,你也会想做一些更复杂的事情。我会更新我的答案。Markus,类名也可以包括下划线和连字符。我不确定正则表达式是否有效。根据CSS 2.1语法()更新了我的答案,我认为无论输入的内容是什么样的,它都会起作用。有没有办法让它不那么贪婪,因为例如,如果输入是:
,那么输出就会变成,我猜这是因为无法知道输入中可能有哪些属性,或者即使每个chec只有一个输入k、 你可能想做一些更复杂的事情。我会更新我的答案。Markus,类名也可以包括下划线和连字符。我不确定正则表达式是否有效。根据CSS 2.1语法()更新了我的答案,我认为无论输入的内容是什么样的,它都会起作用。有没有办法让它不那么贪婪,因为例如,如果输入是:
,那么输出就会变成,我猜这是因为无法知道输入中可能有哪些属性,或者即使每个chec只有一个输入k、 你会想做点什么的