首页 > 解决方案 > 正则表达式在代码中不匹配,但正则表达式很好

问题描述

所以我有一个正则表达式来验证来自阿根廷的电话号码,这些号码实际上是这种类型

0351 15589834

在这个正则表达式中,我可以写出没有用于缩短数字的 0 和 15 的数字

 private fun isValidPhoneNumber(phoneNumber: String):Boolean {
        val regex = "/^(?:(?:00)?549?)?0?(?:11|[2368]\\d)(?:(?=\\d{0,2}15)\\d{2})??\\d{8}\$/"
        val pattern = Pattern.compile(regex)
        val matcher = pattern.matcher(phoneNumber)
        return matcher.matches()
    }

    private fun attachEditTextPhoneListener(){
        etxt_verificar_num.addTextChangedListener(object: TextWatcher {
            override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
                if(isValidPhoneNumber(s.toString())){
                    enableContinueBtn()
                }else{
                    disableContinueBtn()
                }
            }
            override fun afterTextChanged(s: Editable?) {}
            override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
        })
    }

现在,当我开始输入我的数字时,它永远不会验证它们,但我已经检查了正则表达式

/^(?:(?:00)?549?)?0?(?:11|[2368]\\d)(?:(?=\\d{0,2}15)\\d{2})??\\d{8}\$/

在这里 https://regex101.com/ 使用我提供的号码并且它可以工作,为什么它在我的代码中不匹配?

标签: androidregexkotlinregex-lookarounds

解决方案


推荐阅读