Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 用正则表达式检查输入_Java_Regex - Fatal编程技术网

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+表示一个或多个,+是一个贪婪运算符,所以要限制它的范围?随附。但你是对的?通常意味着前面的字符是可选的。见->