我在Javascript中使用正则表达式有一个非常基本的问题,我正在努力让它运行起来。
想要删除
<text id="toto2" class="classTest">useless</text>
在以下字符串中:
<svg><text id="toto"></text><text id="toto2" class="classTest">useless</text></svg>
所以,这是我的代码:
var svgStr = '<svg><text id="toto"></text><text id="toto2" class="classTest">useless</text></svg>';
svgStr = svgStr.replace(/<text(.)*?class="classTest"(.)*?>(.)*?<\/text>/gm, '');
alert(svgStr);
它只打印:
'<svg></svg>'
(它正在删除所有&lt; text&gt;节点)。 我真的不明白我在这里做错了什么,感谢任何帮助!
谢谢!
答案 0 :(得分:4)
以下是你的正则表达式:
<text
...找到它(在<text id="toto">
中)。class="classTest"
,好的,发现(<text id="toto2" class="classTest">
)>
的所有内容,确切地说就在那里(class="classTest"
之后)</text>
的所有内容,在</svg>
之前找到它。所以它在第一个<text
开始比赛,即。第一个节点,并在</text>
之后的第一个class="classTest"
结束,这是最后一个节点。换句话说,全部删除。
试试这个:
/<text[^>]+?class="classTest"[^>]*>.*?<\/text>/g