在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和其他。
答案 0 :(得分:1)
这应该这样做:
str = 'My <style type="">first</style> name <style>is</style> xyz <style>abc</style>.';
str = str.replace("<style[^>]*?>.*?</style>","");
答案 1 :(得分:0)
'My <style type="">first</style> name <style>is</style> xyz <style>abc</style>.'
.replace(/<style[^>]*>[^<]*<\/style>/g,'');
"My name xyz ."
但实际上你正试图用正则表达式解析xml,这实际上是不可能的。
答案 2 :(得分: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
答案 3 :(得分:0)