0

所以,简而言之,我正在尝试创建一个正则表达式,我可以在即将向我的 php 服务器提交 JSON 对象的 java 程序中使用它。

myString.replaceAll(myRegexString,"");

我的问题是,我对正则表达式绝对没有好处,此外,我需要正确转义字符,因为它存储在字符串中,然后还要在正则表达式中正确转义字符。天哪。

我想出的是:

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

第一个反斜杠是转义外部引号以在其中获得一个 "。然后让我震惊的是 {} 和 [] 也是正则表达式命令。我也会转义那些吗?比如:

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

提前致谢。如果从上面的示例中不清楚,我此时真正关心的唯一字符是: " { } [ ] ,以及; : '一般的sqlinj保护。

更新:

这是最后的正则表达式: [\\Q\"',{}[\]:;\\E]对于任何好奇的人。谢谢阿米特!

4

2 回答 2

3

为什么不使用实际的 JSON 编码 API/框架?你在做的不是消毒。你正在做的是破坏数据。如果我的名字是 O'Reilly,我希望它拼写为 O'Reilly,而不是 OReilly。如果我发送包含 [ 或 { 的消息,我希望这些在消息中。使用在需要时转义这些字符的框架或 API,而不是盲目地删除它们。

谷歌搜索 JSON Java 将引导您找到许多 API 和框架。

于 2011-07-01T21:28:56.040 回答
1

尝试类似的东西

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

现在 \Q 和 \E 之间的字符现在被视为普通字符。

于 2011-07-01T21:23:18.323 回答