gpt4 book ai didi

java - 我想检查输入字符串的格式是否正确

转载 作者:行者123 更新时间:2023-12-02 01:22:08 24 4
gpt4 key购买 nike

我想检查输入字符串并验证它是否是正确的数字格式并编写了以下正则表达式。 [+-]?[0-9]*[.]?[0-9]*[e]?[+-]?[0-9]+. 但不幸的是它输出 true对于 --6 或++6

import java.util.*;

public class Main {
public static void main(String args[]) throws Exception {
//Scanner
Scanner in = new Scanner(System.in);
int t = in.nextInt();
in.nextLine();
while(--t >= 0) {
String string = in.nextLine();
string = string.trim();
//System.out.println(string);
String regex = "[+-]?[0-9]*[.]?[0-9]*[e]?[+-]?[0-9]+";
//System.out.println(string.matches(regex));
if(string.matches(regex)) {
System.out.println(1);
}
else {
System.out.println(0);
}
}
}
}

最佳答案

这是由于正则表达式字符串中的第二个 [+-]? 而匹配的。在 ++6 或 --6 中,它首先匹配第一个 +-(因为它存在),然后再次匹配第二个 +-(因为它存在)它存在,然后是数字。

但你已经很接近了。如果存在指数,您要做的只是匹配第二个 [+-]? 。因此,只需将整个指数部分括在括号中并在末尾添加 ? 即可使整个指数部分可选。像这样,只有当第二个 +- 前面有 e/E 时,您才会匹配它。

^[+-]?([0-9]+)?[.]?[0-9]*([eE][+-]?[0-9]+)?$

enter image description here

Regex Demo .

关于java - 我想检查输入字符串的格式是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com