Java-正则表达式,用于检查字符串是否包含连续数字和其他字符

Java-正则表达式,用于检查字符串是否包含连续数字和其他字符,java,Java,我希望编写正则表达式来检查字符串是否包含以下内容: 它包含2到5位的连续数字 它包含超过9位的连续数字 例如: 你好,我的地址是1 MG路-返回错误 你好,我住在100英尺路-返回真实 你能叫我9999273732吗。这是我的号码——是真的 我的pin码是313002-retuns false 您可以使用此正则表达式: ^\D*(?:\d{2,5}|\d{9,})\D*$ 简短说明(您也可以访问演示以查看说明): ^:开始锚定 \D*:任意数量的非数字 (?::启动非捕获组 \d{2,5}:

我希望编写正则表达式来检查字符串是否包含以下内容:

  • 它包含2到5位的连续数字
  • 它包含超过9位的连续数字
  • 例如:

  • 你好,我的地址是1 MG路-返回错误
  • 你好,我住在100英尺路-返回真实
  • 你能叫我9999273732吗。这是我的号码——是真的
  • 我的pin码是313002-retuns false

  • 您可以使用此正则表达式:

    ^\D*(?:\d{2,5}|\d{9,})\D*$
    
    简短说明(您也可以访问演示以查看说明):

    • ^
      :开始锚定
    • \D*
      :任意数量的非数字
    • (?:
      :启动非捕获组
    • \d{2,5}
      :2-5位s
    • |
      :交流发电机
    • \d{9,}
      :9位或更多位
    • :非捕获组结束
    • \D*
      :任意数量的非数字
    • $
      :端锚
    如果您使用以下任何一种方法:

    • String.matches()
    • Pattern.matches()
    • Matcher.matches()
    然后您不必指定起始和结束锚点,
    ^
    $

    模式=
    
        Pattern pattern =
                Pattern.compile("(?<!\\d)(\\d{2,5})(?!\\d)|\\d{9,}"); 
        Matcher matcher =
                pattern.matcher("111lo, I stay at 100 Feet R10034");  // your input here
    
        while (matcher.find()) {
            System.out.format("I found the text" +
                            " \"%s\" starting at " +
                            "index %d and ending at index %d.%n",
                    matcher.group(),
                    matcher.start(),
                    matcher.end());
        }
    

    compile((?您可以这样做

    fun checkDigit(inputValue: String): Boolean {
        var isContinueDigit = false
        var digitSize = 0
    
        inputValue.forEach {
            if (it.isDigit()) {
                if (isContinueDigit) {
                    digitSize++
                } else {
                    isContinueDigit = true
                    digitSize = 0
                    digitSize++
                }
            } else {
                isContinueDigit = false
            }
        }
    
        val isDigit: ArrayList<Int> = arrayListOf(2, 3, 4, 5, 9)
        return isDigit.contains(digitSize) || isDigit.last() < digitSize
    }
    
    fun校验位(inputValue:String):布尔值{
    var isContinueDigit=false
    var digitSize=0
    inputValue.forEach{
    if(it.isDigit()){
    if(isContinueDigit){
    数字化++
    }否则{
    isContinueDigit=true
    数字大小=0
    数字化++
    }
    }否则{
    isContinueDigit=false
    }
    }
    valisdigit:ArrayList=arrayListOf(2,3,4,5,9)
    返回isDigit.contains(digitSize)| isDigit.last()
    这里是
    (\\d{2,5}|\\d{9,})
    。投票被否决,因为没有任何尝试。只是想知道:为什么我们需要一个非捕获组?@Amim OP不想捕获任何东西,他们只想检查
    字符串是否与正则表达式匹配,所以我们不需要捕获组,但如果我们使用一个,它也会起作用。OP没有提到他们使用kotlinYea。我忘了谢谢下次我会小心这不是我的问题,像2,5这样的数字意味着(例如4456,2545625254),而高于9意味着(例如985674236)无论你分享什么,谢谢你,但是请帮帮忙。2,5表示元素的大小。9以上也表示大小。所以它并不意味着只有从2到9的数字。它只是表示数组的大小