Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.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 允许字符串中除9和16位以外的任何数字_Java_Regex - Fatal编程技术网

Java 允许字符串中除9和16位以外的任何数字

Java 允许字符串中除9和16位以外的任何数字,java,regex,Java,Regex,上面的正则表达式不允许字符串中的数字大于10位。 例如,如果用户输入测试1234567891。该文本是有效文本。我们应该允许用户输入此文本。 用户不应只输入9位数字或16位数字。 例如,测试123456789应该无效。如何修改正则表达式。正则表达式最适合满足这一要求吗?我认为如果你有一个数字,检查字符串长度会更容易阅读 有些人在遇到问题时会想:“我知道,我会用 现在他们有两个问题 请参见。不要将正则表达式用于此类检查。Java在字符串上有.length(): ^(?![\\s\\S]*(\\d{

上面的正则表达式不允许字符串中的数字大于10位。 例如,如果用户输入测试1234567891。该文本是有效文本。我们应该允许用户输入此文本。 用户不应只输入9位数字或16位数字。
例如,测试123456789应该无效。如何修改正则表达式。

正则表达式最适合满足这一要求吗?我认为如果你有一个数字,检查字符串长度会更容易阅读

有些人在遇到问题时会想:“我知道,我会用 现在他们有两个问题


请参见。

不要将正则表达式用于此类检查。Java在字符串上有
.length()

^(?![\\s\\S]*(\\d{16})|[\\s\\S]*(\\d{9}))[\\s\\S]*

可能是的,但我认为这个人有关于正则表达式的家庭作业。@Andremoniy你可能是对的,但如果是这样,我认为这是一个不幸的问题选择。学习编程语言和构造的很大一部分是学习如何正确选择用于给定问题的工具。要求某人学会如何使用螺丝刀钉钉子不是教你正确使用螺丝刀和锤子的好方法。这个正则表达式实际上是有缺陷的(不平衡的括号),即使你平衡了它们,它也不会做你认为它会做的事。@Andremoniy消极展望不是closed@fge,ups,我只是误读了
private static final Pattern DIGITS = "\\d+";

public boolean inputOK(String input)
{
    Matcher m = DIGITS.matcher(input);

    int len;

    while (m.find()) {
        len = m.group().length();
        if (len == 9 || len == 16)
            return false;
    }

    return true;
}