正则表达式弄乱了json_decode();

时间:2011-10-03 17:12:00

标签: php regex json

我正在使用包含json字符串的文件来创建请求验证。在我的一个测试中,其中一个JSON片段如下所示:

    {
        "name": "pattern",
        "attributes": [
            {
                "name": "pattern",
                "value": "^[\d]{2}$"
            }
        ]
    }

但是,当您尝试在此字符串上使用json_decode()时,会出现json语法错误。它与正则表达式的内容有关。为什么并且有办法解决这个问题?

2 个答案:

答案 0 :(得分:4)

反斜杠需要转义:

  "value": "^[\\d]{2}$"

JSON允许在字符串中使用以下标记:

  
      
  • any-Unicode-character-except - " - 或 - \ - 或 - control-character
  •   
  • \"
  •   
  • \\
  •   
  • \/
  •   
  • \b
  •   
  • \f
  •   
  • \n
  •   
  • \r
  •   
  • \t
  •   
  • \u four-hex-digits
  •   

\d是不允许的。

答案 1 :(得分:1)

您需要退出\,因为\d不是JSON中的有效控制字符。