我正在从头开始构建一个JSON验证器,但我对字符串部分很感兴趣。JSON.org:
我的regex到目前为止是:
/^\"((?=\\)\\(\"|\/|\\|b|f|n|r|t|u[0-9a-f]{4}))*\"$/
它确实通过一个反斜杠后跟一个字符和一个空字符串来匹配条件。但我不确定如何使用UNICODE部分。
是否有正则表达式可以匹配任何UNICODE字符expert“或\或控制字符?它是否匹配换行符或水平制表符?
最后一个问题是因为正则表达式匹配字符串“\t”,但不匹配““(四个空格,但目的是作为制表符)。否则我需要用它扩展正则表达式,这不是问题,但我猜水平制表符是UNICODE字符。
多亏了Jaeger Kor,我现在有了下面的正则表达式:
/^\"((?=\\)\\(\"|\/|\\|b|f|n|r|t|u[0-9a-f]{4})|[^\\"]*)*\"$/
它看起来是正确的,但是否有任何方法来检查控制字符,或者这是不需要的,因为它们出现在www.example.com上的非打印字符上regular-expressions.info?。
更新:正则表达式如下,以防有人需要它:
/^("(((?=\\)\\(["\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^"\\\0-\x1F\x7F]+)*")$/
2条答案
按热度按时间mrwjdhj31#
为你的确切问题创建一个字符类
然后你可以在最后加上 *,得到0或无限个,或者1或一个无限个,加上+
或
下面还有一个,在https://regex101.com/中搜索json时可以在library选项卡下找到
这应该匹配任何有效的JSON,你也可以在上面的网站测试它
编辑:
Link to the regex
368yc8dk2#
使用这个,也适用于数组jsons [{...},{...}]:
Demo:https://regex101.com/r/aHAnJL/1