0

つまり、一言で言えば、JSON オブジェクトを PHP サーバーに送信しようとしている Java プログラムで使用できる正規表現を作成しようとしています。

myString.replaceAll(myRegexString,"");

私の質問は、正規表現がまったく得意ではないということです。さらに、文字列に格納されている文字を適切にエスケープし、正規表現内で文字を適切にエスケープする必要があります。良い主よ。

私が思いついたのはこれでした:

String myRegexString = "[\"',{}[]:;]"

最初のバックスラッシュは、そこに " を入れるために外側の引用符をエスケープすることでした。そして、{} と [] も正規表現コマンドであることに気付きました。それらもエスケープしますか? のように:

String myRegexString = "[\"',\{\}\[\]:;]"

前もって感謝します。上記の例から明らかでなかった場合、現時点で私が本当に気にかけている文字は次のとおり です。" { } [ ] ,また; : '、一般的な sqlinj 保護用です。

アップデート:

これが最後の正規表現 [\\Q\"',{}[\]:;\\E]です。興味のある人向けです。ありがとうアミット!

4

2 に答える 2

3

実際の JSON エンコーディング API/フレームワークを使用してみませんか? あなたがしていることは消毒ではありません。あなたがしていることは、データを破壊することです。私の名前が O'Reilly なら、O'Reilly ではなく、O'Reilly と綴りたいと思います。[または{を含むメッセージを送信する場合、これらをメッセージに含めたい. これらの文字をやみくもに削除するのではなく、必要に応じてエスケープするフレームワークまたは API を使用してください。

JSON Java をグーグル検索すると、多くの API とフレームワークにたどり着きます。

于 2011-07-01T21:28:56.040 に答える
1

次のようなものを試してください

String myRegexString = "[\\Q\"',{}[]:;\\E]";

\Qと\Eの間の文字が通常の文字として扱われるようになりました。

于 2011-07-01T21:23:18.323 に答える