我有下面的深层链接,如果字符串有2个或更多的问号正则表达式应该失败,最好应包含总是一个问号正则表达式 - 链接不允许双问号的Java
这里是正则表达式我使用:"^(?!.*[?][?].*)+$"
TestMe?src=SRCH&reset=true - regex should pass
TestMe?src=SRCH?reset=true - regex should fail
我有下面的深层链接,如果字符串有2个或更多的问号正则表达式应该失败,最好应包含总是一个问号正则表达式 - 链接不允许双问号的Java
这里是正则表达式我使用:"^(?!.*[?][?].*)+$"
TestMe?src=SRCH&reset=true - regex should pass
TestMe?src=SRCH?reset=true - regex should fail
您正在寻找2个相邻S:
"^(?!.[?][?].)+$"
^^
你的 “失败” 字符串没有说:
TestMe?src=SRCH?reset=true
^--------^
你并不需要使用正则表达式来检查两个问号:(?!。[?] [?] *。*)
boolean containsTwoQuestionMarks(String str) {
return str.indexOf('?') != str.lastIndexOf('?');
}
我不是在寻找相邻的?,总体上2个或更多?应该失败。需要正则表达式,因为我想附加到现有的正则表达式 – user1970783
稍微高效:'int first = str.indexOf('?');首先返回> = 0 && index
你的正则表达式'^ + $'只匹配空的字符串并失败所有其他字符串。你需要'.matches(“(?s)^(?!(?:[^?] * [?]){2})。*”)'或者使用下面的解决方案。 –
你决定用正则表达式来解决这个问题。现在你有两个问题。 –
上面的正则表达式工作原理 – user1970783