URL参数字符串的java正则表达式
我正在尝试验证字符串是否与正则表达式匹配。 URL格式为:URL参数字符串的java正则表达式,java,regex,Java,Regex,我正在尝试验证字符串是否与正则表达式匹配。 URL格式为:key=value&key=value&.. 键或值可以为空 我的代码是: Pattern patt = Pattern.compile("\\w*=\\w*&(\\w *=\\w*)* "); Matcher m = patt.matcher(s); if(m.matches()) return true; else return false; 当我输入one=1&two=2时,它将显示false,而应该显示true。 任何想
key=value&key=value&..
键或值可以为空
我的代码是:
Pattern patt = Pattern.compile("\\w*=\\w*&(\\w *=\\w*)* ");
Matcher m = patt.matcher(s);
if(m.matches()) return true;
else return false;
当我输入one=1&two=2
时,它将显示false,而应该显示true。
任何想法 您需要的正则表达式是
Pattern.compile("(?:\\w+=\\w*|=\\w+)(?:&(?:\\w+=\\w*|=\\w+))*");
看。它将匹配:
-1+字字符后跟(?:\\w+=\\w*|=\\w+
,然后0+字字符(强制键,可选值)或=
后跟1+字字符(可选键)=
-零个或多个上述序列(?:&(?:\\w+=\\w*|=\\w+))
要允许空白,请在需要时添加
\\s*
。如果您还需要允许非单词字符,请使用,例如,[\\w.-]
而不是\w
来匹配单词字符,
和-
(将-
保留在字符类的末尾)。取消反斜杠:如果返回true,则替换;否则返回false代码>使用返回A代码>@GiladGreen不,他的正则表达式很好。他只需要转义\,因为它是一个Java字符串。请参阅。您需要“\\w+=\\w+(?:&\\w+=\\w+*”
regex。\w+
将匹配一个或多个单词字符,\w*
将允许空字符串。嗯,也许你真的想允许=&=&=&=
,不知道。然后使用“\\w*=\\w*(?:&\\w*=\\w*)*”
。要求是什么?。顺便说一句,添加了另一个dupe-。关于更新:您真的想匹配第二个=
之前的空格吗?
String s = "one=1&two=2&=3&tr=";
Pattern patt = Pattern.compile("(?:\\w+=\\w*|=\\w+)(?:&(?:\\w+=\\w*|=\\w+))*");
Matcher m = patt.matcher(s);
if(m.matches()) {
System.out.println("true");
} else {
System.out.println("false");
}
// => true