Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用java编写只允许数字0-9和0的正则表达式_Java_Regex - Fatal编程技术网

如何用java编写只允许数字0-9和0的正则表达式

如何用java编写只允许数字0-9和0的正则表达式,java,regex,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;

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

我对正则表达式很在行

任何帮助都将不胜感激

如果我不清楚,请告诉我。

将字符添加到您的字符类,而不是使用交替运算符

[0-9#]+
将角色添加到角色类中,而不是使用交替操作符

[0-9#]+
试试这个。这会给你结果


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

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

^[\d#]+$
其思想是使用模式[\d]匹配数字和符号,并且可以使用+进行多次1或多次匹配。为了确保行以这些字符开头和结尾,我使用锚定“^start of the line”和$end of line”

对于java,请记住将backslas转义为:

^[\\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!");
}
如果您想了解有关用法的更多信息,可以查看以下链接:


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

^[\d#]+$
其思想是使用模式[\d]匹配数字和符号,并且可以使用+进行多次1或多次匹配。为了确保行以这些字符开头和结尾,我使用锚定“^start of the line”和$end of line”

对于java,请记住将backslas转义为:

^[\\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!");
}
如果您想了解有关用法的更多信息,可以查看以下链接:



怎么样?@AmalMurali:这解决了我的问题。在某种程度上,但不是完全。对于'33'它返回true,即33之前的空格不确定您的意思。您能创建一个演示这个问题的regex101演示吗?仅供参考,这里有用于Java的在线regex测试员,可以轻松验证答案。这里有一个:怎么样?@AmalMurali:这解决了我的问题。在某种程度上,但不是完全。对于'33'它返回true,即33之前的空格不确定您的意思。您能创建一个演示这个问题的regex101演示吗?仅供参考,这里有用于Java的在线regex测试员,可以轻松验证答案。这里有一个:这解决了我的问题。在某种程度上,但不是完全。对于'33',即33之前的空格,它返回true,对于33,它也返回true33@newbie33失败。请看我提供的链接。Duh!对我写了scan.next而不是scan.nextLine这解决了我的问题。在某种程度上,但不是完全。对于'33',即33之前的空格,它返回true,对于33,它也返回true33@newbie33失败。请看我提供的链接。Duh!对我写了scan.next而不是scan.nextlinehanks来回答问题,但这允许使用33 33Hi@hwnd中的空格,你的工具怎么了?我试图使用它,但它是离线的!对我写了scan.next而不是scan.nextLine。谢谢你的回答。。最简单的!:+1感谢回答,但这允许使用空格,如33 33 hi@hwnd,您的工具发生了什么?我试图使用它,但它是离线的!对我写了scan.next而不是scan.nextLine。谢谢你的回答。。最简单的!:+1我可以使用^[\\d]+$代替吗??Eclipse显示错误无效转义sequence@newbie正如我在回答中所说的那样。您必须避开反斜杠,因此对于\d,您必须使用\\d我可以使用^[\\d]+$代替??Eclipse显示错误无效转义sequence@newbie正如我在回答中所说的那样。必须避开反斜杠,因此对于\d,必须使用\\d