JSON中的正则表达式模式
Regex pattern in JSON?
我试图有一个单一的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()
之前已经被解释为一个'
,并且我们回到了我们开始的地方。正如decze在评论中指出的那样,这可以通过添加四个反斜杠来解决:
{"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正则表达式中没有紧跟特定字符的模式
- 我应该使用什么正则表达式来验证数字模式
- youtube视频的正则表达式匹配模式可以以非贪婪的方式完成吗
- _water_glass的javascript正则表达式模式
- 谷歌浏览器模式正则表达式在使用setCustomValidity动态创建表单时不起作用
- 需要正则表达式模式的帮助
- 正则表达式根据模式替换所有匹配项
- 使用正则表达式查找字符模式
- 正则表达式模式与各种端点匹配
- 带有模式的正则表达式字符串
- JavaScript 中 URL 的正则表达式模式
- Java 与 Javascript 中的正则表达式模式
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效
- 将Javascript正则表达式模式转换为C++std::regex的规则
- 如何从字符串构造正则表达式模式
- 城市和州正则表达式模式
- Javascript正则表达式:在同一模式中混合匹配和不匹配
- 设置自定义HTML5有效性消息属性忽略模式正则表达式
- 使用作用域数据的Angular模式正则表达式验证