在 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 中存储电子邮件验证正则表达式字符串的主要内容,如果未能解决你的问题,请参考以下文章

js 正则验证正整数

在 json 模式中使用正则表达式来验证没有空格的字符串?

React 电子邮件验证中的正则表达式

js验证正整数

使用正则表达式验证电子邮件

正则表达式,电子邮件验证从文本框中获取用户输入