关于正则表达式无法匹配手机号的问题

前提

今天要做输入框验证手机号和电话号码的功能,需要用到正则表达式,于是就在网上搜了这么一段正则验证的代码,也不知道能不能用,先试试再说:

^((0\d{2,3}-?\d{7,8})|(1[35784]\d{9}))$;

按道理来说,直接复制粘贴过去就可以使用了。但是,问题出现了:居然验证失败了。

我是这么使用的:(第一种方式)
<input type="text" id="phone">
<script>
    var phone = document.getElementById("phone");
    var number = phone.value;

    phone.onblur = function(){
    
    
        var pattern = new RegExp("^((0\d{2,3}-?\d{7,8})|(1[35784]\d{9}))$");//关键代码
        var result = pattern.test(number);
        if(number && !result){
            alert('格式错误!');
        }
### 使用Python正则表达式验证或提取手机号 为了使用Python中的正则表达式验证或提取手机号,可以利用`re`模块提供的功能。此模块允许创建复杂的模式以精确匹配所需的字符串格式。 对于中国地区的手机号码而言,通常由11位数字组成,并且第一位通常是1。因此,一个有效的正则表达式可能是如下所示: ```python import re def validate_phone_number(phone): pattern = r'^1\d{10}$' # 定义匹配规则[^1] match_result = re.match(pattern, phone) if match_result: return True else: return False # 测试函数 print(validate_phone_number('13800138000')) # 输出应为True ``` 上述代码定义了一个名为`validate_phone_number`的函数,它接收待检验的电话号码作为参数并返回布尔值表示其合法性。这里使用的正则表达式`r'^1\d{10}$'`意味着整个输入应该严格地从头到尾只包含以‘1’开头后面跟有十个任意数字字符的情况。 如果目标是从一段文本中抽取所有的可能存在的手机号,则可采用不同的方式——即寻找所有符合条件的部分而非整体匹配: ```python text_with_phones = """ Here are some fake Chinese mobile numbers: 13795642187, 13800138000 and this is not a valid one 12345678. """ pattern_for_extraction = r'\b1\d{10}\b' extracted_numbers = re.findall(pattern_for_extraction , text_with_phones) for number in extracted_numbers : print(number) # 应打印出两个有效手机号 ``` 这段脚本会遍历给定的文字内容,找到其中形似中国大陆地区移动电话号码的所有实例,并将其收集至列表内供后续处理[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值