我希望用户只输入数字0-9和'#' 没有空格,没有字母,也没有其他特殊字符。
例如:
12736#44426 :true
263 35# :false
2376shdbj# :false
3623t27# :false
#? :false
这是我的代码:
boolean valid(String str)
{
if(str.matches("[0-9]+|(\\#)"))
return true;
else
return false;
}
但它为3256#
我也试过[0-9]+|(#)
我在正则表达式上非常棒。
任何帮助都将不胜感激。
告诉我,如果我不清楚。
答案 0 :(得分:3)
将#
字符添加到字符类中,而不是使用交替运算符。
[0-9#]+
答案 1 :(得分:2)
你可以使用这样的正则表达式:
^[\d#]+$
<强> Working demo 强>
我们的想法是使用模式[\d#]
匹配数字和符号#,可以多次使用+
。为了确保该行以这些字符开头和结尾,我使用锚点^
(行的开头)和$
(行尾)。
对于java,请记住将反向转义为:
^[\\d#]+$
您可以使用 java 代码:
Pattern pattern = Pattern.compile("^[\\d#]+$");
Matcher matcher = pattern.matcher(YOUR TEXT HERE);
if (matcher.find()) {
System.out.println("matches!");
}
或者:
if ("YOUR STRING HERE".matches("^[\\d#]+$")) {
System.out.println("matches!");
}
如果您想了解有关使用情况的更多信息,请查看以下链接:
http://www.vogella.com/tutorials/JavaRegularExpressions/article.html#regexjava
答案 2 :(得分:1)
^[0-9#]+$
试试这个。这会给你结果。