如何在JSON中存储正则表达式日期模式

时间:2017-01-17 09:35:00

标签: java json regex

我的代码要求我在JSON中存储正则表达式字符串。这对大多数模式都很好,但是当使用带有'/'的日期模式时会遇到麻烦

我尝试使用'\'

进行转义

(\\d{1,2}\/\\d{1,2}\/\\d{1,2})这似乎工作正常,因为JSONLint确实给出了任何错误

然而,挑战是当我试图解析JAVA程序中的JSON字符串时,它会产生错误,因为它还需要'\'和'/'进行转义。我尝试了多种选择,但无法解决

2 个答案:

答案 0 :(得分:1)

我认为你提出的正则表达式反对过多的反斜杠:看看:https://regex101.com/r/xBFeZG/1

它只需要在java正则表达式中进行转义,因此将我认为你想要的内容转换为:

 (\\d{1,2}\\/\\d{1,2}\\/\\d{1,4})

但是,为什么不简单地使用标准日期格式(例如:dd / MM / yyyy - >参见https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html)并执行以下操作:

LocalDate.parse(date, DateTimeFormatter.ofPattern(format)

答案 1 :(得分:0)

如果你有一个像

这样的表达式
\d{1,2}/\d{1,2}/\d{1,4}

然后将其导出为JSON将生成类似这样的内容

{ "regex": "\\d{1,2}\/\\d{1,2}\/\\d{1,4}" }

与每个" \"被转义为" \\"。

要在Java中正确解析,你真的只需要" un-escape"转义反斜杠,换句话说,删除前导反斜杠。这样的事情应该有效:

String regex = jsonRegex.replaceAll("\\\\(.)", "$1");

编辑:转发斜线实际上并不需要转义,虽然逃避它们并不会受到伤害。因此,表达式很可能以JSON格式发出,如

\\d{1,2}/\\d{1,2}/\\d{1,4}