正则表达式验证输入字符串

时间:2017-08-05 08:29:59

标签: java regex

如果他们符合以下格式,我需要验证输入字符串。

\[composite\s*=\s*{(.*?)}\] 

这个正则表达式是否可以。不是正则表达式专家。

{{1}}

1 个答案:

答案 0 :(得分:0)

您的模式几乎看起来正确,除了大括号是正则表达式元字符并且还需要转义:

String input = "[composite={key1: value1, key2:value2}]";
String pattern = "\\[composite\\s*=\\s*\\{\\s*[A-Za-z0-9]+\\s*:\\s*[A-Za-z0-9]+\\s*(?:,\\s*[A-Za-z0-9]+\\s*:\\s*[A-Za-z0-9]+\\s*)*\\}\\]";
if (input.matches(pattern)) {
    System.out.println("match");
}

我还修改了你的模式以检查逗号分隔的键值对,以及可选的空格。以下是有效的输入列表:

[composite={key1: value1}]
[composite={key1: value1 , key2 : value2}]
[composite={key1: value1 , k:v   , key:value, abc:123 }]

请注意,如果您可以使用JSON解析器验证括号内容,则可能优于正则表达式。

在这里演示:

Rextester