正则表达式排除字符

时间:2016-03-18 16:30:11

标签: java regex

我需要防止字段有双下划线或空格。我希望在字段上没有匹配时发生错误,而不是尝试匹配以检查错误。我几乎有模式,但是当字符串以双下划线开头时,我似乎仍然无法阻止匹配。这就是我所拥有的:

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

3 个答案:

答案 0 :(得分:0)

尝试:

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

这应该匹配由非_或空格的字符组成的任何字符串,以及_但后面没有_的任何字符。

答案 1 :(得分:0)

"(\\ 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());

答案 2 :(得分:0)

你可以拿出某事。像:

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

这将防止直接跟随两个下划线或两个空格。请参阅a demo on regex101.com