python使用正则表达式判断手机号是否正确
时间: 2024-11-07 14:29:54 浏览: 51
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 中的 re 模块来生成手机号。以下是一个示例代码:
```python
import re
import random
def generate_phone_number():
prefix = ["13", "14", "15", "17", "18"]
phone_number = random.choice(prefix) + "".join(random.choice("0123456789") for i in range(8))
return re.sub(r"(?<=\d)(?=(?:\d\d\d)+$)", "-", phone_number)
# 生成手机号
phone_number = generate_phone_number()
print(phone_number)
```
这个函数会随机生成一个以 13、14、15、17、18 为前缀的手机号,然后将其格式化为 xxx-xxxx-xxxx 的形式。
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 位数字的手机号。
阅读全文