0

在 Javascript 或 ruby​​ 中,我需要使用正则表达式找到一个子字符串并将其从可能包含多个子字符串的主字符串中删除。

我的主要字符串是

 My <style type="">first</style> name <style>is</style> xyz <style>abc</style>.

我需要删除样式标签中的所有文本,包括样式标签。

我尝试了以下表达式和其他几种变体

(<style .*>[^<>]*?<\/style>)
(<style .*>[^<>]*<\/style>)

我想要的结果字符串是

My name xyz.

但我找不到正确的方法。我得到的是

<style type="">first</style> name <style>is</style> xyz <style>abc</style>

什么是正确的正则表达式?

注意:不能使用任何 JS 库,如 jquery 等。

4

4 回答 4

1

这应该这样做:

str = 'My <style type="">first</style> name <style>is</style> xyz <style>abc</style>.';
str = str.replace("<style[^>]*?>.*?</style>","");
于 2012-11-22T13:05:13.337 回答
0
'My <style type="">first</style> name <style>is</style> xyz <style>abc</style>.'
.replace(/<style[^>]*>[^<]*<\/style>/g,'');
"My  name  xyz ."

但本质上,您正在尝试使用正则表达式解析 xml,这实际上是不可能的。

于 2012-11-22T13:12:02.970 回答
0

您还可以使用 DOM 解析来删除不需要的节点。

var el = document.createElement('div');
el.innerHTML = 'My <style type="">first</style> name <style>is</style> xyz <style>abc</style>.';
var styles = el.getElementsByTagName('style');
for(var i = styles.length - 1; i >= 0; i--){
    console.log(styles);
    el.removeChild(styles[i]);
}
el.innerHTML; // My name xyz
于 2012-11-22T13:12:36.207 回答
0

你可以试试这个

[<\/][a-z]+[a-z][ ][a-z]+[=]["]["][>]|[<][\/][a-z]+[>]|[<][a-z]+[>]

点击这里输出

于 2012-11-22T13:45:33.343 回答