我想要一个正则表达式来检查字符串是否包含字母数字,连字符和下划线。除了这三个之外,不应该有任何空格或其他特殊字符。我的字符串将属于这两种模式中的任何一种。
XYZ0123_123456
ABCdefGHI-727
我已经尝试过这个表达式。但它没有锻炼。 [[a-zA-Z0-9_-]*]
答案 0 :(得分:10)
<强>工作强>
这是快速解决方案。
String regex = "^[a-zA-Z0-9_-]*$";
sampleString.matches(regex);
(^)anchor表示字符串的开头
($)anchor表示字符串的结尾
A-Z,a-z代表字符范围
0-9代表数字范围
(_)代表下划线
( - )代表连字符
答案 1 :(得分:6)
您可以^[\w-]*$
使用\w
表示:
a-z
,A-Z
,0 to 9
,underscore
您所犯的错误是在字符类中封装正确的正则表达式([a-zA-Z0-9_-]*
== [\w-]*
),从而丢失量词(*
)含义