寻求丹麦手机号Regex优化方案:匹配前缀及后缀非数字场景
优化丹麦手机号匹配正则表达式
优化后的正则表达式
\b(?:tel\.|tlf|mobil:)?\D*(\(?\+45\)?(?:\s?\d{2}){4})\b
表达式说明
\b:单词边界,避免前缀或手机号被字符串片段误匹配(?:tel\.|tlf|mobil:)?:可选匹配常见前缀(tel.、tlf、mobil:),非捕获组不干扰手机号提取\D*:匹配前缀与手机号之间任意数量的非数字分隔符(空格、冒号等)(\(?\+45\)?(?:\s?\d{2}){4}):核心捕获组,兼容原正则的纯手机号规则:\(?\+45\)?:可选匹配带/不带括号的国家码+45(?:\s?\d{2}){4}:匹配4组两位数字,每组前允许可选空格(支持数字间的空格分隔格式)
\b:结尾单词边界,确保手机号后接字母时不会错误包含字母部分
测试验证
以下是未覆盖场景的匹配结果:
- 输入:
tlf 12 34 56 78abc→ 捕获:12 34 56 78 - 输入:
mobil: +45(12)34 5678→ 捕获:+45(12)34 5678 - 输入:
tel. 4512345678→ 捕获:4512345678 - 输入:
12345678xyz→ 捕获:12345678
如果需要统一输出格式(比如去除空格、括号),可在捕获后对结果做字符串替换处理,例如用replace(/[\s()]/g, '')清除无关符号。
内容的提问来源于stack exchange,提问作者Oliver
相关产品推荐
相关产品推荐

