我正在使用RegExp从字符串中提取特定单词,如下所示:
<div class = ''></div>class class
我目前的RegExp声明是:
/(<)[^(>)]*(;| |'|"e;)(class)?( |'|"e;|=)/gi
在这种情况下,我不想匹配“class”这个词,但前提是它之前和之后都有特定的字符(或&符号)。该声明匹配:
<div class
出于原始字符串,我在替换方法中使用它(插入'class'所在的文本)并且我想保留其他字符,是否有任何方法可以将此匹配修改为仅选择(替换)单词'class'(在本例中)?
或者有更好的方法吗? 提前谢谢。
答案 0 :(得分:1)
您可以使用下一个代码来完成这项工作:
var removeSubstring=(function(){
var fn=function($0,$1,$2,$3){return $1+$3;};
return function(str,before,after,removed){
var rg=new RegExp("("+before+")("+removed+")("+after+")","gi");
return str.replace(rg,fn);
};
})();
var str="<div class = ''></div>class class <div class ";
var before="<div ";
var after=" ";
var removed="class";
removeSubstring(str,before,after,removed);
// <div = ''></div>class class <div
但您必须确保 before
, after
和 removed
字符串中没有的内容包含特殊的 RegExp 格式字符(例如.
[
]
?
*
和其他字符,请参阅MDN RegExp) 。否则,您必须首先在 before
, after
和 removed
字符串中转义这些特殊字符。< / p>
<强>更新强>
您还可以为 before
, after
和 {{1}使用有效的正则表达式 }} 使搜索更灵活。例如,下一个代码删除字母'X','V'和'Z'但不删除'x','v'和'z':
removed
如果你需要用另一个字符串替换substring,你可以使用下一个函数:
var str="qXd ezrwsvrVa etxceZd";
var before="q|w|e|r";
var after="a|s|d|f";
var removed="z|x|c|v";
removeSubstring(str,before,after,removed);
// "qd ezrwsvra etxced"
答案 1 :(得分:0)
试试这个:
var match = /your regex here/.exec(myString)
match = match.replace('class','')