3

JavaScript 変数名のすべての無効な文字をアンダースコア (Java) に置き換える正規表現を作成しようとしています。

私がやりたいことは次のとおりです。

String jsVarName = "1inva>idName".replaceAll("[a-zA-Z_$][0-9a-zA-Z_$]", "_");

という名前の変数になります_inva_idName

私が苦労しているのは、最初のキャラクターを他のキャラクターとは違うものにする方法を見つけることです.

[a-zA-Z_$][0-9a-zA-Z_$]必要な文字はありますが、正しい構文にフックする方法がわかりません。JS 変数名が完全な Unicode になることは知っていますが、気になるのは ASCII だけです。

4

1 に答える 1

4
String jsVarName = "1inva>idName".replaceAll("^[^a-zA-Z_$]|[^0-9a-zA-Z_$]", "_");

\wであるため[a-zA-Z_0-9]、簡略化できることに注意してください。

String jsVarName = "1inva>idName".replaceAll("^[^a-zA-Z_$]|[^\\w$]", "_")

^[^a-zA-Z_$][a-zA-Z_$]でなく、行の先頭に表示されるものすべてに一致します。|またはです。[^0-9a-zA-Z_$]ではないものすべてに一致し[0-9a-zA-Z_$]ます。

詳細については、正規表現のチュートリアルを参照してください。

于 2013-11-05T05:13:04.690 に答える