python输入一个字符串,通过设计正则表达式pattern,分别编写以下问题的python函数,实现相应的功能: (1) 验证输入的字符串是否是有效的手机号码。手机号码由11位数字组成,以1开头,格式如下:1XX-XXXX-XXXX。 (2) 验证输入的字符串是否是有效的日期。日期格式为YYYY-MM-DD,其中YYYY表示四位年份,MM表示两位月份,DD表示两位日。 (3) 验证输入的字符串是否是有效的邮政编码。假定某地区邮政编码为6位数字,格式如:123456。
时间: 2024-02-09 14:12:19 浏览: 49
好的,针对你的问题,可以分别编写以下函数:
```python
import re
def is_valid_phone_number(string):
pattern = r'^1\d{2}-\d{4}-\d{4}$'
return bool(re.match(pattern, string))
def is_valid_date(string):
pattern = r'^\d{4}-\d{2}-\d{2}$'
if not bool(re.match(pattern, string)):
return False
year, month, day = map(int, string.split('-'))
if month < 1 or month > 12:
return False
if day < 1 or day > 31:
return False
if month in [4, 6, 9, 11] and day > 30:
return False
if month == 2:
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
if day > 29:
return False
else:
if day > 28:
return False
return True
def is_valid_postcode(string):
pattern = r'^\d{6}$'
return bool(re.match(pattern, string))
```
其中,is_valid_phone_number 函数使用正则表达式 `r'^1\d{2}-\d{4}-\d{4}$'` 匹配手机号码的格式,然后使用 re.match 方法进行匹配,如果匹配成功则返回 True,否则返回 False。
is_valid_date 函数使用正则表达式 `r'^\d{4}-\d{2}-\d{2}$'` 匹配日期的格式,然后使用字符串的 split 方法将年份、月份、日分别提取出来,最后进行日期的合法性检查。
is_valid_postcode 函数使用正则表达式 `r'^\d{6}$'` 匹配邮政编码的格式,然后使用 re.match 方法进行匹配,如果匹配成功则返回 True,否则返回 False。
阅读全文