Javascript正则表达式失败

时间:2014-02-03 17:57:56

标签: javascript regex string

我在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;节点)。 我真的不明白我在这里做错了什么,感谢任何帮助!

谢谢!

1 个答案:

答案 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