求适用于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
相关产品推荐
相关产品推荐

