2015-07-06 56 views
1

我有一個字符串,它應該包含one name,然後&,然後second name。 和兩個連續的&不應該發生。最後一個字符也不應該是&如何在java中連續限制超過1個&符號

我曾嘗試下面的代碼,但是這是不工作

System.out.println("45345&&345".matches("(^(?!&)(?!.*&&)[0-9&]+(?<!&))$")); 

正則表達式是爲(^(?!&)(?!.*&&)[0-9&]+(?<!&))$

,但它不工作! 你能幫我嗎。

+0

'^ [^&] +&[^&] + $'? – ndn

+0

@ndn我已經試過這個,但它也沒有工作 – Prashant

+1

只要他們只有一個'&',並且不用'&'開始或結束,它就會匹配行。這不是你想要的嗎? – ndn

回答

2

只是一個&上線並且不啓動或結束&

^[^&]+&[^&]+$ 

可以包含多個&,但不是個連續的和不啓動或結束&

^(?:[^&]+&)+[^&]+$ 
+0

請檢查針對'abc&def && ghi&jkl'的第二個正則表達式。子句'(?:[^&] *&)+'允許導致不需要匹配的[[&&]'爲零。我認爲'^(?:[^&] +&)+ [^&] + $'完成這項工作。 – AdrianHHH

+0

@AdrianHHH,你是對的。固定。謝謝。 – ndn

3
String sa = "santanu&sahoo&"; 
System.out.println(!sa.contains("&&")?sa.matches(".*([a-zA-Z0-9]+)(&)([a-zA-Z0-9]+).*&$"):"False");