python正则用*号隐藏电话号码的中间四位数 比如: phone = '13841789213' 结果: '138****9213
时间: 2023-06-29 20:08:29 浏览: 284
可以使用正则表达式的替换功能来实现这个需求。具体代码如下:
```python
import re
phone = '13841789213'
new_phone = re.sub(r'(\d{3})\d{4}(\d{4})', r'\1****\2', phone)
print(new_phone) # 输出 '138****9213'
```
解释一下上面的代码:
- `r'(\d{3})\d{4}(\d{4})'`:这是一个正则表达式,它表示匹配一个电话号码,其中 `\d{3}` 匹配前三位数字,`\d{4}` 匹配中间四位数字,`\d{4}` 匹配最后四位数字。括号中的 `\d{3}` 和 `\d{4}` 是分组,会在后面的替换中使用到。
- `r'\1****\2'`:这是替换的模板,其中 `\1` 表示第一个分组,也就是前三位数字;`\2` 表示第二个分组,也就是最后四位数字;`****` 表示要替换的中间四位数字。
因此,`re.sub(r'(\d{3})\d{4}(\d{4})', r'\1****\2', phone)` 的作用就是将 `phone` 中符合正则表达式的部分替换为上面的模板,得到新的电话号码 `new_phone`。
相关问题
手机号中间4位显示****
您可以使用正则表达式来处理您的手机号码,将中间的四位数替换为****。以下是使用Python的示例代码:
import re
phone_number = "13812345678"
formatted_phone_number = re.sub(r"(?<=\d{3})\d{4}(?=\d{4})", "****", phone_number)
print(formatted_phone_number)
输出:138****5678
在python中使用re模块完成市面上手机号规则的编写、随机生成11位数字然后通过正则匹配出符合规则的11位数号码
你好!关于你的问题,我可以为你提供一些帮助。
要使用Python中的re模块来匹配符合规则的手机号码,首先需要了解移动、联通、电信三大运营商的手机号码规则。以中国大陆地区的手机号码为例,移动号码开头数字为13、15、18、198,联通号码开头数字为13、15、18、166,电信号码开头数字为13、15、18、199。
因此,我们可以使用re模块和正则表达式来编写匹配规则。以下是一个简单的例子:
```
import re
import random
# 随机生成一个11位手机号码
def generate_phone_number():
prefix = ["13", "15", "18", "166", "198", "199"]
phone_number = random.choice(prefix) + "".join(random.choices("0123456789", k=9))
return phone_number
# 匹配手机号码
def match_phone_number(phone_number):
pattern = "^1[3-9]\\d{9}$"
if re.match(pattern, phone_number):
return True
else:
return False
# 测试
phone_number = generate_phone_number()
print("随机生成的手机号码为:", phone_number)
if match_phone_number(phone_number):
print("该号码符合规则")
else:
print("该号码不符合规则")
```
以上代码通过调用Python中的random模块生成了一个11位的随机手机号码,并通过正则表达式匹配判断该手机号码是否符合规则。
希望以上解答能对您有所帮助,如果有任何问题请随时与我交流。