You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何校验仅含加号与数字的字符串(提醒应用场景)

校验手机号格式的解决方案

正则表达式方案(推荐)

正则里的+是表示“匹配一次或多次”的元字符,要匹配字面的加号,要么用反斜杠\转义,要么把它放进字符集[]里(字符集内的特殊字符无需转义)。

针对你的需求,分两种场景给出正则:

  • 必须以加号开头,后续全为数字(严格符合国家码+手机号格式):

    import re
    
    def validate_contact(s):
        return bool(re.fullmatch(r'^\+\d+$', s))
    

    规则解释:

    • ^ 锚定字符串开头
    • \+ 匹配字面意义的加号
    • \d+ 匹配1个及以上数字
    • $ 锚定字符串结尾
    • re.fullmatch 确保整个字符串完全匹配规则,避免部分匹配的情况
  • 允许可选加号开头(即可以不带加号,但带加号必须在开头,整体仅含数字和加号):
    修改正则为 r'^\+?\d+$',其中?表示加号可以出现0次或1次。

非正则手动校验方案

如果不想依赖正则,可拆分逻辑实现:

def validate_contact(s):
    if not s:
        return False
    if s.startswith('+'):
        # 去掉开头加号后,剩余部分必须全是数字
        return s[1:].isdigit()
    else:
        # 无加号时,整个字符串必须全是数字
        return s.isdigit()

这个逻辑先判断字符串是否为空,再根据是否以加号开头分别校验剩余内容,完美解决startswith()和isdigit()冲突的问题。

内容的提问来源于stack exchange,提问作者user25700860

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:48:17