修剪RegExp结果

时间:2012-08-24 11:28:40

标签: javascript regex

我正在使用RegExp从字符串中提取特定单词,如下所示:

<div class = ''></div>class class 

我目前的RegExp声明是:

/(<)[^(>)]*(;| |'|&quote;)(class)?( |'|&quote;|=)/gi

在这种情况下,我不想匹配“class”这个词,但前提是它之前和之后都有特定的字符(或&符号)。该声明匹配:

<div class 

出于原始字符串,我在替换方法中使用它(插入'class'所在的文本)并且我想保留其他字符,是否有任何方法可以将此匹配修改为仅选择(替换)单词'class'(在本例中)?

或者有更好的方法吗? 提前谢谢。

2 个答案:

答案 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','')