我正在尝试使用单个 JSON 文件来验证前面(JS)和后面(PHP)的数据。
我不知道如何将我的模式放在 json 字符串中,PHP 不会转换它。
这是我想使用的(电子邮件验证):
'{"name":"email", "pattern":"^[a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,15})$"}'
我想模式中有一些东西不会被视为字符串?照原样,不会转换为 PHP 中的对象。我不应该逃避任何事情,但我可能错了......
谢谢
编辑:按照评论中的建议尝试了这个:
json_decode('{"name":"email", "pattern":"^[a-z0-9]+(\\.[_a-z0-9]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,15})$"}'); ==> NULL
最佳答案
问题是反斜杠 \
.使用两个来表示有一个并且它会很好地工作:
{"name":"email","pattern":"^[a-z0-9]+(\\.[_a-z0-9]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,15})$"}
以上是有效的 JSON,但作为 PHP 字符串会引起问题,因为
\\
已经被解释为一个 \
在传递给 json_decode()
之前,我们又回到了起点。如deceze请在评论中指出,这可以通过添加四个反斜杠来解决:{"name":"email","pattern":"^[a-z0-9]+(\\\\.[_a-z0-9]+)*@[a-z0-9-]+(\\\\.[a-z0-9-]+)*(\\\\.[a-z]{2,15})$"}
或者通过立即传递
file_get_contents()
中的内容(或类似)到json_decode()
.
关于javascript - JSON中的正则表达式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25426464/