如何用java编写只允许数字0-9和0的正则表达式
我希望用户只输入数字0-9和 没有空格、字母和其他特殊字符 例如:如何用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;
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