我正在使用PHP,我开发了一个脚本来清理JSON字符串。
此过程中的一个步骤是防止数字和布尔值被明确地双引号。
以下是我的正则表达式排除数字。
/\:[\s\n\t]*([^0-9\{\}\[\],\"]+)[\s\n\t]*/i
但是,我正在尝试增强它,以便它包括布尔值,即true和false。如果没有这个,任何布尔将被双引号(我想避免)。
我有什么想法可以改进上面的正则表达式吗?
感谢。
答案 0 :(得分:1)
您可以使用?!
断言排除布尔值与您的角色类黑名单匹配。
/\:[\s\n\t]*(?!true|false)([^0-9\{\}\[\],\"]+)[\s\n\t]*/i
顺便说一句,因为浮点数所以它的字符类会失败。我也不完全相信你的“消毒”方法。看来你只是在这里后处理一些裸数组属性。 (如果它们由不包含在dquotes中的多个单词组成,它还会失败。)