[英]regular expression java for URL parameter string
我正在嘗試驗證字符串是否與正則表達式匹配。 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。 任何想法 !
您需要的正則表達式是
Pattern.compile("(?:\\w+=\\w*|=\\w+)(?:&(?:\\w+=\\w*|=\\w+))*");
參見regex演示 。 它將匹配:
(?:\\\\w+=\\\\w*|=\\\\w+)
-1+個單詞字符后跟=
,然后0+單詞字符(必選鍵,可選值)或=
后跟1+單詞字符(可選鍵) ) (?:&(?:\\\\w+=\\\\w*|=\\\\w+))*
-零個或多個上述序列。 Java演示 :
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
要允許空格,請在需要\\\\s*
地方添加\\\\s*
。 如果還需要允許非單詞字符,請使用[\\\\w.-]
代替\\w
來匹配單詞字符.
和-
(在字符類的末尾保留-
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.