2016-11-29 32 views
0

我有下面的深層鏈接,如果字符串有2個或更多的問號正則表達式應該失敗,最好應包含總是一個問號正則表達式 - 鏈接不允許雙問號的Java

這裏是正則表達式我使用:"^(?!.*[?][?].*)+$"

TestMe?src=SRCH&reset=true - regex should pass 
TestMe?src=SRCH?reset=true - regex should fail 
+1

你的正則表達式'^ + $'只匹配空的字符串並失敗所有其他字符串。你需要'.matches(「(?s)^(?!(?:[^?] * [?]){2})。*」)'或者使用下面的解決方案。 –

+1

你決定用正則表達式來解決這個問題。現在你有兩個問題。 –

+0

上面的正則表達式工作原理 – user1970783

回答

2

您正在尋找2個相鄰S:

"^(?!.[?][?].)+$" 
    ^^ 

你的 「失敗」 字符串沒有說​​:

TestMe?src=SRCH?reset=true 
     ^--------^ 

你並不需要使用正則表達式來檢查兩個問號:(?!。[?] [?] *。*)

boolean containsTwoQuestionMarks(String str) { 
    return str.indexOf('?') != str.lastIndexOf('?'); 
} 
+0

我不是在尋找相鄰的?,總體上2個或更多?應該失敗。需要正則表達式,因爲我想附加到現有的正則表達式 – user1970783

+0

稍微高效:'int first = str.indexOf('?');首先返回> = 0 && index shmosel