1

すべてのタグとプロパティが大文字になるように(できれば正規表現を使用して)、HTMLタグを含む文字列を変換したいと思います。

たとえば、次の文字列:

'<bla>something <br/><a href="foo">bar</a></bla>'

に変更する必要があります

'<BLA>something <BR/><A HREF="foo">bar</A></BLA>'

これは、単一の文字列を正規表現に置き換えることで可能ですか?もしそうなら、どのように?

4

2 に答える 2

3

HTML 要素のタグ名だけを大文字に変更するのは非常に簡単です。次のように、String replace メソッドのコールバック関数バージョンを使用します。

function HtmlTagName2Upper(text) {
    return text.replace(/(<\/?\w+\b)([^<>]*>)/g,
                function(m0, m1, m2) {
                    return m1.toUpperCase() + m2;});
}

上記の正規表現は、タグ名を に$1、すべての属性 (存在する場合) を にキャプチャし$2ます。上記の正規表現はかなりうまく機能しますが、山括弧を含む属性値を処理せず、属性名を大文字にしません。

属性値に山括弧を含む HTML 要素を処理し、要素の属性名を大文字にすることは、もう少し複雑です。

function HtmlTagAndAttributeNames2Upper(text) {
    return text.replace(/(<\/?\w+\b)((?:[^<>'"]+|"[^"]*"|'[^']*')*>)/g,
                function(mo0, mo1, mo2) {
                    mo2 = mo2.replace(/(\s+[\w\-.:]+)((?:\s*=\s*(?:"[^"]*"|'[^']*'|[\w\-.:]+))?)/g,
                            function(mi0, mi1, mi2) {
                                return mi1.toUpperCase() + mi2});
                    return mo1.toUpperCase() + mo2;});
}
于 2012-06-23T15:23:52.840 に答える
0

正直なところ、私は AS3 の専門家ではありません。ただし、回避策は次のとおりです。

  1. 次のような正規表現ですべての html タグを検索します。<[^>]+>
  2. 検出されたすべてのhtml タグを大文字バージョンに置き換えます (toUpperCase()メソッドを使用)。
于 2012-06-23T14:04:13.727 に答える