python使用正则表达式判断手机号是否正确
时间: 2024-11-07 22:29:54 浏览: 7
Python中可以使用re模块(Regular Expression,正则表达式库)来判断手机号码是否符合常见的格式。中国手机号通常以11位数字组成,格式可能是1开头的移动号码,或者是13、14、15、17、18、19等前缀加上8到9位数字。
下面是一个简单的示例,展示如何编写正则表达式来验证中国大陆的手机号码:
```python
import re
def is_valid_phone_number(phone_number):
pattern = r'^1[3-9]\d{9}$' # 匹配以1开头,第二位是3-9,后跟9个数字的格式
return bool(re.match(pattern, phone_number))
# 测试例子
print(is_valid_phone_number('13812345678')) # 返回True
print(is_valid_phone_number('01012345678')) # 返回False,因为以0开始不是合法的手机号
print(is_valid_phone_number('12345678901')) # 返回False,第二位不是3-9
相关问题
python使用正则表达式生成手机号
下面是一个生成随机手机号的 Python 代码,使用了正则表达式:
```python
import re
import random
def generate_phone_number():
# 随机生成手机号前 3 位
first = random.choice([3, 4, 5, 7, 8])
# 随机生成手机号后 8 位
second = random.sample('0123456789', 8)
# 将列表转化为字符串
second = ''.join(second)
# 使用正则表达式将手机号格式化为 3-4-4 的格式
phone_number = re.sub(r"(?<=\d)(?=(\d{4})+$)", "-", str(first) + second)
return phone_number
print(generate_phone_number())
```
输出类似于 `138-8888-8888` 的随机手机号。
python使用正则表达式校验输入的手机号是否正确
可以使用 Python 中的 re 模块来进行正则表达式的匹配,以下是一个检验手机号是否正确的示例代码:
```python
import re
def check_phone_number(number):
pattern = r'^1[3-9]\d{9}$'
match = re.match(pattern, number)
if match:
return True
else:
return False
# 测试
print(check_phone_number('13912345678')) # True
print(check_phone_number('12345678900')) # False
print(check_phone_number('1234567890')) # False
```
其中,正则表达式 `r'^1[3-9]\d{9}$'` 中:
- `^` 表示以后面的模式开头;
- `1` 表示手机号的第一位必须为 1;
- `[3-9]` 表示手机号的第二位为 3-9 中的任意一个数字,即 3、4、5、7、8 中的一个;
- `\d{9}` 表示手机号的后 9 位为数字;
- `$` 表示以前面的模式结尾。
因此,该正则表达式可以匹配以 1 开头,第二位为 3、4、5、7、8 中的一个,后面跟着 9 位数字的手机号。
阅读全文