我需要一个正则表达式,如果字符串以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).)*$
但它没有用。谁能建议?
我只是拿了你的代码并运行了它(删除多余的括号和锚点):
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
似乎正是你想要的,不是吗?
更新
在您编辑的答案中,您使用的是单反斜杠而不是双反斜杠。
更好的正则表达式是
^(http://www.xyzabc.com)(?!.*?getJobId).*$
(?!.*?getJobId)
会检查 getJobId 是否退出,如果退出,那么它将不匹配!
使用此正则表达式http://www.xyzabc.com((?!getJobId)S)*(?=s|$)
http://www.xyzabc.com
淤积常量
((?!getJobId)S)*
不包含getJobId,但可以包含符号
(?=s|$)
下一个符号空间或匹配项是最后一个单词