4

我有一个用于验证电子邮件地址的正则表达式字符串,我想通过 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 控制台中为该正则表达式字符串设置一个变量。

任何人都知道我能做些什么来让它工作?

4

1 回答 1

2

这不起作用,因为您在字符串中使用 "。

一种解决方法是将每个 " 替换为 /'\ 之类的东西,然后再次解析它的内容将每个 /'\ 替换为 " ,这样就可以了。

将寻找更好的方法,但同时希望这会有所帮助。

更新:

每个 base 64 对其进行编码然后对其进行解码:类似于http://decodebase64.com/

并在您进行字符串化时保存 base 64 编码正则表达式,然后在您解析 base 64 解码并将其存储回来..

所以基本上

-当想要字符串化时 -base64 编码正则表达式 -用 base 64 覆盖普通正则表达式 -Stringify json

- 当想要解析 JSON - 解析它 - 获取 base 64 reg ex - 解码它 - 替换它

于 2012-08-22T14:41:33.990 回答