当前位置: 首页 > 知识库问答 >
问题:

如果字符串与正则表达式不完全匹配,我怎么能忽略字符串?

年健
2023-03-14

例如,我想忽略这个字符串123 456 78912,但是正则表达式匹配了前三个字符,所以它返回true。有没有办法在不创建新正则表达式的情况下做到这一点?

正则表达式还必须匹配以下内容:

0(123)456-789-ABcd

0 (123) 456

(123) 234 345-456

1111111111111

1 123 123 123 123

123个

123-(456)

123 (456) 789

(电话)

(123)

private boolean checkValidity(String number){
    // Check value using regex and set value to field only if sastify these rules:
    //
    //   Phone number is split using space or dash
    //   Prefix may have +
    //   1st/2nd group have (), maximum only one grp
    //   grp contains number/upper/lowercase, at least two symbols in length
    //   1st grp may have one symbol in length

    Pattern pattern = Pattern.compile("^\\+?\\d{0,100}(\\w+[ -]+)*([ -]+\\(\\w+\\)[ -]+|[ -]+\\(\\w+\\)$|\\(\\w+\\)[ -]+|\\(\\w+\\)$){0,2}([ -]?\\w)*");
    Matcher matcher = pattern.matcher(number);
    boolean matchFound = matcher.find();

    if(matchFound){
        return true;
    }
    System.out.println("Wrong number format!");
    return false;
}

共有1个答案

曾涵育
2023-03-14

使用matcher.group()检查原始值和匹配值。等于

private boolean checkValidity(String number){
        //check value using regex and set value to field only if sastify these rules:
        //Phone number is split using space or dash
        //Prefix may have +
        //1st/2nd group have (), max only 1 grp
        //grp contains number/upper/lowercase, at least 2 symbols in length
        //1st grp may have 1 symbol in length

        Pattern pattern = Pattern.compile("(^\\+?\\d{0,100}(\\w+[ -]+)*([ -]+\\(\\w+\\)[ -]+|[ -]+\\(\\w+\\)$|\\(\\w+\\)[ -]+|\\(\\w+\\)$){0,1}([ -]?\\w{2,100})*)");
        Matcher matcher = pattern.matcher(number);
        boolean matchFound = matcher.find();
        //System.out.println(matcher.group());
        if(matchFound && matcher.group().equals(number)){
            return true;
        }
        System.out.println("Wrong number format!");
        return false;
    }
 类似资料:
  • 问题内容: 我会在开头提到这个问题,尽管我离正则表达式专家很远,但是它们对我来说并不完全陌生。对于我来说,构建正则表达式来搜索特定字符串中的模式通常不是问题,但是我有一个(也许是?)独特的情况。 我有一组价值观,例如: 028938 DEF567987 390987.456 GHI345928.039 我想匹配一组特定的字符串,例如: 完全由6位数字组成的字符串 字符串,由正好6位数字,十进制组成

  • 我正在使用adobe javascript中的正则表达式在绘图标题栏中查找一串单词。从数字(1)开始,然后是日期,然后是不同数量的单词和4组首字母 图形标题栏示例具有以下内容: 1 20.09.16 此测试的更改 SB SB BW CR 0 29.07.16批准用于施工MM SB BW GM 正则表达式结果是 对于建筑MM SB BW GM 1 20.09.16本试验的变更 我需要正则表达式是 1

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)

  • 问题内容: 我在尝试将我的javascript regex经验转移到Python时遇到了麻烦。 我只是想让它工作: …但是它打印无。如果我做: 它匹配…默认情况下是否匹配字符串的开头?当匹配时,如何使用结果? 我如何进行第一场比赛?是否有比python网站提供的文档更好的文档? 问题答案: 隐式添加到您的正则表达式的开头。换句话说,它仅在字符串的开头匹配。 将在所有位置重试。 一般来说,建议您在需

  • 我有一些xml文件,希望删除除特定字符串以外的所有内容。 StackOverflow上还有很多类似的问题,但都不适用于我的文件,在尝试了几个小时不同的正则表达式后,我想寻求帮助。 到目前为止,部分成功但并非完全成功的最接近的正则表达式是: xml文件的示例: 我使用regex101,因此可以将示例粘贴在那里,以了解为什么rex只能部分工作。简而言之,它与第一次出现的不匹配,但与第二次出现的匹配。我

  • 我正在arround制作一个与字符串的某个块匹配的正则表达式,问题是它包含许多相似的块,并且没有清楚地分开,所以我不知道如何停止正则表达式。 字符串的例子 所以我要做的是匹配并只选择第一个A1。到目前为止,我所做的是: