用户名的Java正则表达式
我正在寻找Java中的正则表达式,用户名的Java正则表达式,java,regex,Java,Regex,我正在寻找Java中的正则表达式,Java.util.regex,只接受字母,-和,以及一系列Unicode字符,如umlauts、eszett、变音符号和其他来自欧洲语言的有效字母。 我不想要的是数字、空格(如”或“Tom”)或特殊字符(如!)英镑$%等 到目前为止,我发现它非常令人困惑 我是从这个开始的 [A-Za-z.\\s\\-\\.\\W]+$ 结果是: [A-Za-z.\\s\\-\\.\\D[^!\"£$%\\^&*:;@#~,/?]]+$ 使用cavat表示没有内部方
Java.util.regex
,只接受字母,-
和
,以及一系列Unicode字符,如umlauts、eszett、变音符号和其他来自欧洲语言的有效字母。
我不想要的是数字、空格(如”
或“Tom”
)或特殊字符(如!)英镑$%
等
到目前为止,我发现它非常令人困惑
我是从这个开始的
[A-Za-z.\\s\\-\\.\\W]+$
结果是:
[A-Za-z.\\s\\-\\.\\D[^!\"£$%\\^&*:;@#~,/?]]+$
使用cavat表示没有内部方括号,根据
有没有人对新的正则表达式有什么建议,或者有什么原因说明上面的正则表达式不起作用?对于我的回答,我想使用一个与你类似的更简单的正则表达式:[a-Z[^!]+
,意思是“至少有一次:(从a到Z的字符)或者(不是“!”的字符)。
注意“不是”!”“已包含A到Z。因此外部字符组([A-Z..
)中的所有内容都是无意义的
请尝试[\p{Alpha}-.]+
并使用模式.UNICODE_CHARACTER_CLASS
标志编译正则表达式。使用:(?=.[@#$%&\s])-当至少有一个特殊字符(从集合中)且用户名包含空格时,返回true
您可以根据需要添加更多特殊字符。例如:
String str = "k$shor";
String regex = "(?=.*[@#$%&\\s])";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.find()); => gives true
您收到的是错误消息,还是不匹配。在这两种情况下,请向我们提供详细信息,说明到底发生了什么情况。一个问题可能是您使用了\\D
。请改为在求反字符类中使用\\D
。此外,您应该在开头添加^
。否则,如果只有最后一个字符,您的正则表达式将匹配您的字符串的三分之一是允许的。