我有下面的深層鏈接,如果字符串有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