如何在java中编写一个只允许数字0-9和#的正则表达式

时间:2014-09-09 17:03:25

标签: java regex

我希望用户只输入数字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#

返回false

我也试过[0-9]+|(#)

我在正则表达式上非常棒。

任何帮助都将不胜感激。

告诉我,如果我不清楚。

3 个答案:

答案 0 :(得分:3)

#字符添加到字符类中,而不是使用交替运算符。

[0-9#]+

答案 1 :(得分:2)

你可以使用这样的正则表达式:

^[\d#]+$

<强> Working demo

enter image description here

我们的想法是使用模式[\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#]+$

试试这个。这会给你结果。