我需要防止字段具有双下划线或空格。我希望在字段中没有匹配时发生错误,而不是尝试匹配以检查错误。我几乎有这个模式,但是当字符串以双下划线开始时,我似乎无法阻止匹配。以下是我有:正则表达式排除字符
(^(:^ \ S)(:((?:?。?!?__ | \ S)))* $)
我需要防止字段具有双下划线或空格。我希望在字段中没有匹配时发生错误,而不是尝试匹配以检查错误。我几乎有这个模式,但是当字符串以双下划线开始时,我似乎无法阻止匹配。以下是我有:正则表达式排除字符
(^(:^ \ S)(:((?:?。?!?__ | \ S)))* $)
尝试:
^([^_\s]|(_(?!_)))*$
这应该匹配由不是_
或空白的字符组成的任何字符串,以及任何不是_
后面跟有的字符。
什么 “(\\ \\小号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());
I only需要知道是否有两个空格,不需要匹配更多,这种情况下效率不高。 –
@Jan下划线是允许的,只有双下划线是无效的。 –
@DarthAndroid:对,你误解了。 – Jan
尝试['String pattern =“^(?:(?!(?:__ | \\ s))。)* $”'](https://regex101.com/r/cV3cD1/1) –