我有一个有效的正则表达式
(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+
此功能可在处进行验证 https://www.regextester.com/94502
现在,我尝试创建一个JSON,其中将上述表达式用作值。
{
"regex": "^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$"
}
可以在以下位置验证 https://jsonlint.com/
原来是无效的json。上面的json有什么问题?
答案 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:
将单引号更改为双引号。
应用上面给出的字符转义特殊字符。
我希望这可以解决您的问题。祝你有美好的一天。