我需要一个正则表达式字符串来匹配以"https"www.mydomain.com","myView"开头的URL?"网址的其余部分"正则表达式用于 jsf 视图 no for 代码。
有效网址:
https://www.mydomain.com/myView?z
https://www.mydomain.com/myView?a=hello&b=world&c=how&d=are&e=you
https://www.mydomain.com/myView?a=hello&b=world&c=how&d=are&e=(you)
无效网址:
https://www.mydomain.com/myView?
https://www.mydomain.com/myView
https://www.mydomain.com/myViewfdgdfgfd
测试代码:
//Pattern to check if this is a valid URL address, not work
Pattern p = Pattern.compile("^(https://www.mydomain.com/myView?)");
Matcher m;
m=p.matcher(urlAddress);
这是一个
简单的案例。这只有两部分,表达式的开头和其余部分。
开始表达式:
^https://www.mydomain.com/myView\?
网址的其余部分(有效的网址字符):
[a-zA-Z0-9~!';@#\^\$%&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]
测试代码:
String regex = "^https://www.mydomain.com/myView\?[a-zA-Z0-9~!';@#\^\$%&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]+";
String validUrlchars = "[a-zA-Z0-9~!';@#\^\$%&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]";
String url1 = "https://www.mydomain.com/myView?z";
String url2 = "https://www.mydomain.com/myView?";
String url3 = "https://www.mydomain.com/myView";
String url4 = "https://www.mydomain.com/myViewfdgdfgfd";
String url5 = "https://www.mydomain.com/myView?a=hello&b=world&c=how&d=are&e=you";
String url6 = "https://www.mydomain.com/myView?a=hello&b=world&c=how&d=are&e=(you)";
Pattern p = Pattern.compile(regex);
Matcher m;
m = p.matcher(url1);
System.out.println(m.matches() + " " + url1);
m = p.matcher(url2);
System.out.println(m.matches() + " " + url2);
m = p.matcher(url3);
System.out.println(m.matches() + " " + url3);
m = p.matcher(url4);
System.out.println(m.matches() + " " + url4);
m = p.matcher(url5);
System.out.println(m.matches() + " " + url5);
m = p.matcher(url6);
System.out.println(m.matches() + " " + url6);
输出:
true https://www.mydomain.com/myView?z
false https://www.mydomain.com/myView?
false https://www.mydomain.com/myView
false https://www.mydomain.com/myViewfdgdfgfd
true https://www.mydomain.com/myView?a=hello&b=world&c=how&d=are&e=you
true https://www.mydomain.com/myView?a=hello&b=world&c=how&d=are&e=(you)