【发布时间】:2015-11-16 06:33:06
【问题描述】:
我正在从头开始构建一个 JSON 验证器,但我对字符串部分非常坚持。我希望构建一个匹配 JSON.org 上的以下序列的正则表达式:
到目前为止,我的正则表达式是:
/^\"((?=\\)\\(\"|\/|\\|b|f|n|r|t|u[0-9a-f]{4}))*\"$/
它确实与条件匹配,反斜杠后跟一个字符和一个空字符串。但我不确定如何使用 UNICODE 部分。
是否有正则表达式可以匹配任何 UNICODE 字符专家 " 或 \ 或控制字符?它会匹配换行符或水平制表符吗?
最后一个问题是因为正则表达式匹配字符串“\t”,而不是“”(四个空格,但想法是作为一个制表符)。否则我需要用它来扩展正则表达式,这不是问题,但我猜水平制表符是一个 UNICODE 字符。
感谢 Jaeger Kor,我现在有了以下正则表达式:
/^\"((?=\\)\\(\"|\/|\\|b|f|n|r|t|u[0-9a-f]{4})|[^\\"]*)*\"$/
这似乎是正确的,但有什么方法可以检查控制字符,或者因为它们出现在regular-expressions.info 的不可打印字符上,所以不需要这样做?要验证的输入始终是来自 textarea 的文本。
更新:如果有人需要,正则表达式如下:
/^("(((?=\\)\\(["\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^"\\\0-\x1F\x7F]+)*")$/
【问题讨论】:
标签: javascript json regex unicode