我需要一个匹配字符串的正则表达式,如果它以http://www.xyzabc.com
开头,但该字符串不应包含单词“getJobId”。
例如:
http://www.xyzabc.com/abc <--- should return true
http://www.xyzabc.com/getJobId=9 <--- should return false
我尝试使用以下正则表达式:
^(http://www\.xyzabc\.com)((?!getJobId).)*$
但它不起作用。有人可以建议吗?
答案 0 :(得分:2)
我刚拿走你的代码并运行它(删除多余的parens和锚点):
final String regex = "http://www\\.xyzabc\\.com((?!getJobId).)*";
System.out.println("http://www.xyzabc.com".matches(regex));
System.out.println("http://www.xyzabc.com/abc".matches(regex));
System.out.println("http://www.xyzabc.com/getJobId=9".matches(regex));
打印
true
true
false
看起来就像你想要的一样,不是吗?
在你编辑的答案中你有单个反斜杠而不是双反斜杠。
答案 1 :(得分:1)
更好的正则表达式
^(http://www.xyzabc.com)(?!.*?getJobId).*$
(?!.*?getJobId)
会检查getJobId是否退出,如果是,那么它将不匹配!
答案 2 :(得分:0)
使用此正则表达式http://www\.xyzabc\.com((?!getJobId)\S)*(?=\s|$)
http://www\.xyzabc\.com
silded const
((?!getJobId)\S)*
不包含getJobId但能够包含符号
(?=\s|$)
下一个符号空格或匹配是最后一个单词