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

求适用于Power BI的马来西亚手机号Python正则验证表达式

马来西亚手机号验证的Python正则表达式(Power BI适用)

需求说明

验证马来西亚手机号需满足以下规则:

  • 接受带马来西亚国家码60的手机号(如60123455678)
  • 接受国家码前带+号的格式(如+60123455678)
  • 接受无前导零的手机号(如123455678)
  • 接受带前导零的手机号(如0123455678)
  • 接受服务商为"111"的手机号格式(如01113455678)
  • 仅接受纯数字字符(仅允许国家码前的+号)

修正后的代码

替换你原有的代码,使用精准的正则表达式覆盖所有规则:

import pandas as pd
import re

def validate_my_phone(number):
    if pd.isnull(number):
        return 'Valid'
    num_str = str(number).strip()
    # 匹配所有符合规则的马来西亚手机号
    pattern = r'^(\+60|60)?(0?1[0-9]{8}|0?11[0-9]{8}|[0-9]{8})$'
    return 'Valid' if re.fullmatch(pattern, num_str) else 'Invalid'

dataset['Validity_Mobile_Number'] = dataset['MobileNumber'].apply(validate_my_phone)

正则表达式拆解

^(\+60|60)?(0?1[0-9]{8}|0?11[0-9]{8}|[0-9]{8})$ 各部分作用:

  • ^ 和 $:强制匹配整个字符串,避免部分匹配无效内容
  • (\+60|60)?:可选的国家码模块,支持+60或60,?表示该模块可出现0次或1次
  • 0?1[0-9]{8}:适配带/不带前导零的普通手机号(如0123456789或123456789),0?允许前导零可选,1[0-9]{8}为1开头加8位数字
  • 0?11[0-9]{8}:适配带/不带前导零的111服务商手机号(如01113456789或1113456789),11[0-9]{8}为11开头加8位数字
  • [0-9]{8}:匹配无前导零的8位手机号(如12345678)

注意事项

  • 确保Power BI已启用Python脚本功能,且默认自带的pandas和re库可用
  • 代码中加入strip()处理,避免字符串前后空格干扰匹配结果
  • 保留了你原逻辑中“空值判定为Valid”的设定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:02:47