在 JSON 中存储电子邮件验证正则表达式字符串
Posted
技术标签:
【中文标题】在 JSON 中存储电子邮件验证正则表达式字符串【英文标题】:storing email-validation regex string in JSON 【发布时间】:2012-08-18 00:14:16 【问题描述】:我有一个用于验证电子邮件地址的正则表达式字符串,我想通过 json 将它发送到我的应用程序。我收到来自dojo/Json 的错误消息:
Uncaught SyntaxError: Unexpected token ]
所以我把我的 JSON 文件放到JSONLint 中,得到了这个稍微更具体的错误:
Parse error on line 3:
... "regex": "^(([^<>()[\]\\.,;:\
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '', '['
这是我的 json 文件内容:
"Email Address":
"regex": "^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]1,3\.[0-9]1,3\.[0-9]1,3\.[0-9]1,3\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]2,))$"
Json.org 似乎没有说明任何关于转义正则表达式字符的内容......并且字符串本身被正确转义,因为我可以在 js 控制台中为该正则表达式字符串设置一个变量。
有人知道我可以做些什么来让它工作吗?
【问题讨论】:
在控制台中设置变量后确定还是一样?看起来你需要双重转义你的反斜杠。 【参考方案1】:这不起作用,因为您在字符串中使用 "。
一种解决方法是将每个 " 替换为 /'\ 之类的内容,然后您再次解析它的内容将每个 /'\ 替换为 " ,这样就可以了。
会寻找更好的方法,但同时希望这会有所帮助。
更新:
每个 base 64 编码然后解码:类似于http://decodebase64.com/
并在您进行字符串化时保存 base 64 编码正则表达式,然后在您解析 base 64 解码并将其存储回来..
基本上是这样
-当想要字符串化时 -base64 编码正则表达式 - 用基数 64 覆盖正常的正则表达式 -字符串化json
-当想要解析 JSON 时 - 解析它 - 获取base 64 reg ex - 解码它 - 替换它
【讨论】:
我刚刚意识到,由于它在控制台中工作,我可以从控制台对其进行 json 编码。 "^(([^()[].,;:s@\"]+(.[^()[].,;:s@\"]+)*)|(\". +\"))@(([[0-9]1,3.[0-9]1,3.[0-9]1,3.[0-9]1, 3])|(([a-zA-Z-0-9]+.)+[a-zA-Z]2,))$" 那是固定字符串。 Base64 也是一个好主意,但是进出 base64 需要更多的处理时间,所以我试图避免这种情况。以上是关于在 JSON 中存储电子邮件验证正则表达式字符串的主要内容,如果未能解决你的问题,请参考以下文章