- 締切済み
Javascriptで正規表現を使って HTMLタグの[id="hea
Javascriptで正規表現を使って HTMLタグの[id="header-nav"]のような文字列がある場合に[id="headerNav"]というように一斉に置換するにはどういったふうに書けば良いでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- nda23
- ベストアンサー率54% (777/1415)
/** * タグ内のidの名前を変換 */ function 変換(t) { var タグ内=function(a,b) { var IDパラメータ=function(a,b){ var 引用符内 = function(a,b) { var 大文字化=function(a,b) { return b.toUpperCase(); }; return "\"" + b.replace(/-([a-z])/,大文字化) + "\""; }; return b.replace(/\"(.*)\"/,引用符内); }; return "<" + b.replace(/(\s+id\s*=\s*\".*\"\s*)/,IDパラメータ) + ">"; }; return t.replace(/<(.*?)>/g,タグ内); } //ここから使用例 var t = "<input type=\"text\" id=\"aaa-bbb\">" + " id=\"xxx-yyy\" " + "<input tyepe=\"text\" id=\"ppp-qqq\">"; va 結果 = 変換(t);
- babu_baboo
- ベストアンサー率51% (268/525)
そうか~かたておちだったね。りょうほうにたいおう。 ぜんかくくうはくは、はんかくに。 <script type="application/javascript;version=1.8"> function hoge ( ary, flag ) ary.map( flag ? function ( a ) a.replace( /-([a-z])/g, function ( a, b ) b.toUpperCase() ): function ( a ) a.replace(/[A-Z]/g, function ( a ) '-' + a.toLowerCase() ) ); alert( [hoge( [ 'aB', 'bC' ], false ), hoge( [ 'a-b', 'b-c' ], true ) ] ); </script>
- nda23
- ベストアンサー率54% (777/1415)
>のような文字列 これはどういう意味でしょう? 例えば、id="~"とあれば、引用符の内部は全てと言う意味? あるいは"xxx-yyy"だと"xxxYyy"にするとかですか? 前者と後者では正規表現は違います。
- babu_baboo
- ベストアンサー率51% (268/525)
もひとつおまけ。 <script type="application/javascript;version=1.8"> alert( [ 'a-b', 'b-c' ] .map( function (a) a.replace( /-([a-z])/g, function (a,b) b.toUpperCase() ) ) ); </script>
- babu_baboo
- ベストアンサー率51% (268/525)
var ary = [ 'a-b', 'b-c' ]; var i, I = ary.length; var func = function ( a, b ) { return b.toUpperCase( ); }; for( i = 0; i < I; i++ ) ary[i] = ary[i].replace( /-([a-z])/g, func ); alert( ary );
補足
すいません、後者のほうです。