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

文字列内で「」を使用しているため、これは機能しません。

回避策の1つは、すべての"を/'\のようなものに置き換えてから、再度解析すると、すべての/'\を"に置き換えることです。これで機能します。

より良い方法を検討しますが、うまくいけば、これは当面の間役立つでしょう。

アップデート:

すべてのbase64はそれをエンコードしてからデコードします:http ://decodebase64.com/と同様です

そして、stringifyを実行するときにbase 64エンコード正規表現を保存し、次にbase64を解析デコードして保存します。

だから基本的に

-stringifyする場合-base64エンコード正規表現-通常の正規表現をbase64で上書きします-Stringifyjson

-JSONを解析したい場合-解析します-base64正規表現を取得します-デコードします-置き換えます

于 2012-08-22T14:41:33.990 に答える