Java 用正则表达式检查输入
我正在开发一个用户界面,用户必须输入的一个输入是格式中的一个点Java 用正则表达式检查输入,java,regex,Java,Regex,我正在开发一个用户界面,用户必须输入的一个输入是格式中的一个点 (,) 我以前从未使用过Regex,因此我不太确定如何验证输入。如果开头没有括号或其他与模式不匹配的内容,则不应接受它 那么,如何通过删除其他字符并检查其是否具有所需的模式,将x坐标和y坐标保存为整数呢 有人能告诉我怎么做吗?您可以尝试使用正则表达式模式: \(\d+,\d+\) 示例脚本: String input = "(123,456)"; if (input.matches("\\(\\d+,\\d+\\)")) {
(,)
我以前从未使用过Regex,因此我不太确定如何验证输入。如果开头没有括号或其他与模式不匹配的内容,则不应接受它
那么,如何通过删除其他字符并检查其是否具有所需的模式,将x坐标和y坐标保存为整数呢
有人能告诉我怎么做吗?您可以尝试使用正则表达式模式:
\(\d+,\d+\)
示例脚本:
String input = "(123,456)";
if (input.matches("\\(\\d+,\\d+\\)")) {
System.out.println("MATCH");
}
如果要提取这两个值,可以使用String#split
:
String input = "(123,456)";
String[] coords = input.substring(1, input.length()-1).split(",");
System.out.println("x = " + coords[0]);
System.out.println("y = " + coords[1]);
假设坐标是整数,可以执行如下简单的正则表达式:
^\(\d+?),(\d+?)\)$
这将为您提供三个匹配组。第一个代表整个比赛,第二个代表第一个坐标,第三个代表第二个坐标
您可以用Java解决这个问题,如下所示:
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类协调器{
公共静态void main(字符串[]args){
字符串输入=“(123456)”;
最终模式=模式。编译(“^\\(\\d+?),(\\d+?)\\)$”;
最终匹配器匹配器=pattern.Matcher(输入);
if(matcher.matches()){
intx=Integer.parseInt(matcher.group(1));
inty=Integer.parseInt(matcher.group(2));
System.out.println(“X:+X”);
System.out.println(“Y:+Y”);
}
}
}
另外:在尝试新的正则表达式时,一个很好的起点是:
编辑
如果输入也应可解析,则当逗号后有空格时,可以执行以下操作:
^\(\d+?),\s+(\d+?)\)$
在Java中,反斜杠需要相应地转义。您可以使用
(\d+,\d+)
操场开始使用regex进行实验,这很好。谢谢你。我如何将123和456保存为int?或者我不能用正则表达式保存?我必须先替换所有其他字符吗?哦,如果x坐标的值大于int允许的值会发生什么?我也可以直接用正则表达式检查吗?不完全是这样,\ d+表示一个或多个,+是一个贪婪运算符,所以要限制它的范围?随附。但你是对的?通常意味着前面的字符是可选的。见->