0

属性とテキストの大文字と小文字を保持しながら、XMLタグを大文字に変換しようとしています。だから例えば

<Mytag Category="Parent">Value1</Mytag>

になる

<MYTAG Category="Parent">Value1</MYTAG>

XMLタグに正しく一致する正規表現がありますが、upperCase関数が機能していないようです。

myXmlElement.replace(/<(\/)*([a-zA-Z_0-9]+)([^>]*)>/g,"<$1" + "$2".toUpperCase() + "$3>")

String.prototype.toUpperCase.apply("$2")また、置換引数として関数を渡すだけでなく、を使用してみました

myXmlElement.replace(/<[\/]*([a-zA-Z_0-9]+)[^>]*>/g,
                    function($1,$2,$3){return <$1 + $2.toUpperCase() + $3>})

ただし、$ 1、$ 2、$ 3は一致する要素全体を参照しているように見えるため、これは機能しません($ 1 =、$ 2 =)

私がここで見落としている些細なことがあると確信しています、誰か助けてもらえますか?

4

1 に答える 1

1

タグ名の前後の文字を一致させる場合は、パターン内で一致する中括弧に入れる必要があります。

var pattern = /<([\/]*)([a-zA-Z_0-9]+)([^>]*)>/g 
var newTag = myElement.replace(pattern, function(full, before, tag, after) { 
  return "<" before + tag.toUpperCase() + after + ">"
})

置換関数は、full一致する式を最初の引数として取ります。だからあなたはそれを単に無視するかもしれません。その後、パターンの一致する中括弧がパラメータとして渡されます。

于 2012-05-31T11:45:37.143 に答える