すべてのタグとプロパティが大文字になるように(できれば正規表現を使用して)、HTMLタグを含む文字列を変換したいと思います。
たとえば、次の文字列:
'<bla>something <br/><a href="foo">bar</a></bla>'
に変更する必要があります
'<BLA>something <BR/><A HREF="foo">bar</A></BLA>'
これは、単一の文字列を正規表現に置き換えることで可能ですか?もしそうなら、どのように?
すべてのタグとプロパティが大文字になるように(できれば正規表現を使用して)、HTMLタグを含む文字列を変換したいと思います。
たとえば、次の文字列:
'<bla>something <br/><a href="foo">bar</a></bla>'
に変更する必要があります
'<BLA>something <BR/><A HREF="foo">bar</A></BLA>'
これは、単一の文字列を正規表現に置き換えることで可能ですか?もしそうなら、どのように?
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;});
}
正直なところ、私は AS3 の専門家ではありません。ただし、回避策は次のとおりです。
<[^>]+>
toUpperCase()
メソッドを使用)。