没有使用正则表达式创建有效的json值

时间:2019-10-02 22:10:51

标签: json regex

我有一个有效的正则表达式

(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+

此功能可在处进行验证 https://www.regextester.com/94502

现在,我尝试创建一个JSON,其中将上述表达式用作值。

{
    "regex": "^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$"
}

可以在以下位置验证 https://jsonlint.com/

原来是无效的json。上面的json有什么问题?

2 个答案:

答案 0 :(得分:1)

"regex":右侧带引号的字符串包含字符序列

    \.  \w  \]  \+   \(   \)

其中的每一个在JSON字符串中均无效-有关语法的简要和“直观”说明,请参见http://json.org/

要将给定的正则表达式表示为有效的JSON字符串,必须将每个反斜杠加倍(即,将\替换为\\,就像在其他语言中一样,如PHP,C / C ++等),因此相关行应变为类似

  "regex": "^(?:http(s)?:\\/\\/)?[\\w.-]+   ...

答案 1 :(得分:0)

特殊字符需要根据http://www.json.com进行转义。而且您不需要对单引号'进行换行,但是使用单引号是一种不好的做法。对于新读者,请使用双引号,它将使您摆脱许多头痛。

\b  Backspace (ASCII code 08)
\f  Form feed (ASCII code 0C)
\n  Newline
\r  Carriage return
\t  Tab
\"  Double quote
\\  Backslash character
  

Todo:

     

将单引号更改为双引号。

     

应用上面给出的字符转义特殊字符。

我希望这可以解决您的问题。祝你有美好的一天。