2014-01-24 51 views
0

我想讓我的輸入字段中的每個字符除外^ _^^^^^^^^^^^^^^^>%*()#!?爲此我使用這個約束。 用於客戶端驗證正則表達式模式不起作用

final String regexpattern = "/[^<>%*()#!?]/"; 

用於服務器端

final Pattern pat = Pattern.compile("/[^<>%*()#!?]/"); 

,但它不工作

+0

在我看來,你的正則表達式將工作,但真正的返回值意味着輸入無效,假意味着輸入有效。 – OGHaza

回答

0

在客戶端上的圖案應該是

regexpattern = /^[^<>%*()#!?]*$/ 

服務器

final Pattern pat = Pattern.compile("^[^<>%*()#!?]*$"); 
+0

如果你也不想要'^'字符,你必須使用'[^ ​​<>%*()#!?^]' – Robin

0

它只適用於一個字符,之後需要添加「+」或「*」。

0

你應該有^$在指定的開始和結束的字符串的模式,否則只會驗證是否有字符串中的至少一個有效的字符,而不是字符串中的所有字符都是有效的。

此外,您需要一個字符集的乘數,否則它只會匹配一個字符長的字符串。要允許零個或多個字符使用*,並允許使用一個或多個字符+。你也可以使用一個範圍,例如{2,10}允許2到10個字符。

^在設置的開始是使它爲負,所以不允許^你也需要它在集合中的字符中。

斜槓是正則表達式文字的分隔符。要麼你寫的圖案作爲一個字符串,你可以用它來創建一個正則表達式對象:

pattern = "^[^^<>%*()#!?]+$"; 

,或者你把它寫成一個正則表達式的文本,這成爲一個正則表達式對象:

regex = /^[^^<>%*()#!?]+$/; 
-2

其中一些字符需要在正則表達式中轉義。

試試這個:

final String regexpattern = /[\^<>%*()#!?]+/ ; 


final Pattern pat = Pattern.compile("[\^<>%*()#!?]+") ; 
+0

不需要。方括號內的特殊字符少得多http://www.regular-expressions.info/charclass.html)。 – Robin

+0

經過進一步測試,結果證明這只是需要轉義才能產生正確結果的^。即使沒有必要,轉義其他特殊字符仍然有效。 – Beau