2017-08-18 9 views
0

例外なく、すべてのhtmlタグを文字列から取得しようとしています。明確にするために、厳密に文字列のみで、HTMLオブジェクトに変換する必要はありません。私は1つの正規表現を作成しましたが、それはコンテンツなしでタグをつかむだけです。内容を含む文字列からすべてのhtmlタグを取得する(正規表現のみ)

var text = '<div class="mura-region-local"><p>In October 2010, Lisa and Eugene Jeffers learned that their daughter Jade, then nearly 2 and a half years old, has autism. The diagnosis felt like a double whammy. The parents were soon engulfed by stress from juggling Jade’s new therapy appointments and wrangling with their health insurance provider, but they now had an infant son to worry about, too. Autism runs in families. Would Bradley follow in his big sister’s footsteps?</p></div><img href=""/>' 
 

 
var match = text.match(/<?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[\^'">\s]+))?)+\s*|\s*)?>/g); 
 

 
console.log(match);

+2

XHTML自己完結型タグを除く[RegEx一致の公開タグ]の複製が可能です(https://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – Nisarg

+0

_ "正規表現を1つ作成しましたが、コンテンツなしでタグだけを取得します" ._結果は既存の文字列になりますか? – guest271314

+0

@ NisargShah、この質問は同じではありません...彼らの解決策は機能せず、プラグインの使用を提案しています......私は厳密に言えば、それぞれのコンテンツを含むすべてのhtmlタグを取得したいと述べています –

答えて

0

あなたはすべての可能なタグの<smth>...</smth>のペアを見つけることができません。あなたはtagB内のtagAとtagA内のtagBをすべてのタグについて認識する正規表現を作ることはできません。これらのすべての組み合わせを直接記述する必要があり、そのような正規表現は不可能になります。

しかし、<smth ....></smth><smth..../>というタグだけを正しい順序でチェックする必要はありません。

<(?:\w+(?:\s+\w+=(?:"[^"]*"|'[^']*'))*\/?|(?:\/\w+))> 

Hereが試験です。

+0

htmlタグ内のコンテンツはどうですか? –

+0

これはhtmlタグに対してのみ機能しますが、内容はありません –

+0

@JoseCC上記を読んで、Nisargのリファレンスを読んでください。それは事実上不可能です。あるいは、許可されたすべてのタグとそれを含む可能なすべての組み合わせに対してバリアント正規表現グループをオープンに書き留める必要があります。 20のタグについては、1つのレベルしか含めることができません.400の正規表現グループがあります。そして、それぞれは非常に複雑です。 – Gangnus

関連する問題