2016-03-18 477 views
0

我需要防止字段具有雙下劃線或空格。我希望在字段中沒有匹配時發生錯誤,而不是嘗試匹配以檢查錯誤。我幾乎有這個模式,但是當字符串以雙下劃線開始時,我似乎無法阻止匹配。以下是我有:正則表達式排除字符

(^(:^ \ S)(:((?:?。?!?__ | \ S)))* $)

+0

@Jan下劃線是允許的,只有雙下劃線是無效的。 –

+0

@DarthAndroid:對,你誤解了。 – Jan

+0

嘗試['String pattern =「^(?:(?!(?:__ | \\ s))。)* $」'](https://regex101.com/r/cV3cD1/1) –

回答

0

嘗試:

^([^_\s]|(_(?!_)))*$ 

這應該匹配由不是_或空白的字符組成的任何字符串,以及任何不是_後面跟有的字符。

0

什麼 「(\\ \\小號S | __)」 尋找只爲雙空格或雙下劃線:

Pattern reg = Pattern.compile("(\\s\\s|__)"); 

//If the pattern is not found the String is valid 
System.out.println(! reg.matcher(" v a l i d e").find()); 
System.out.println(! reg.matcher("__invalide").find()); 
System.out.println(! reg.matcher("_valide_").find()); 
System.out.println(! reg.matcher("InVALIDE ").find()); 
System.out.println(! reg.matcher("in__va lid").find()); 
+0

I only需要知道是否有兩個空格,不需要匹配更多,這種情況下效率不高。 –

0

你能想出某事。如:

^(?:(?!__|\s{2,}).)+$ 

這將防止兩個下劃線或兩個空格直接跟隨。見a demo on regex101.com