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>

これの正しい正規表現は何ですか?

注:jqueryなどのJSライブラリは使用できません。

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

あなたはこれを試すことができます

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

ここをクリックして出力してください

于 2012-11-22T13:45:33.343 に答える
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 に答える