我正在尝试检查字符串是否形成为NAME1=VALUE1;NAME2=VALUE2;
.
这是我到目前为止发现的:
s.matches("^(.+=.+;)*$")
但这里有一个棘手的部分:最后一个分号不是强制的。NAME1=VALUE1;NAME2=VALUE2
所以必须接受一个类似的字符串。
有人有想法吗?
我正在尝试检查字符串是否形成为NAME1=VALUE1;NAME2=VALUE2;
.
这是我到目前为止发现的:
s.matches("^(.+=.+;)*$")
但这里有一个棘手的部分:最后一个分号不是强制的。NAME1=VALUE1;NAME2=VALUE2
所以必须接受一个类似的字符串。
有人有想法吗?
您的表达式并没有真正达到预期的效果,因为一方面是贪婪的量词,另一方面是因为您使用的点几乎允许任何字符。
这应该具有您期望的行为:
^(\w+=\w+;)*\w+=\w+;?$
或者,如果空字符串是正确的:
^(\w+=\w+;)*(\w+=\w+;?)?$
请注意,我使用 \w 只是作为限制的示例。
你可以试试那个:
^([^=]+=[^;]+;)*([^=]+=[^;]+;?)$
自“。”以来,您的正则表达式中也有一些错误。也匹配“=”。[^=] 表示“除“=”之外的所有内容。
必须是正则表达式,这可以完成这项工作吗:
for (String pair : myString.split(";")){
if (! ((pair.indexOf("=") > 0) && (pair.indexOf("=") < pair.length()) &&
((myString.split("=").length - myString.split(";").length) < 2) ))
return false;
}
return true;