返回

正则表达式教程:座机电话号码验证

正则表达式

一、正则解释

^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$
  • ^: 匹配字符串的开头。
  • (?:\d{3}-)?: 可选的 3 位区号和连字符。
  • \d{8}: 匹配 8 位数字。
  • |: 或运算符。
  • ^(?:\d{4}-)?: 可选的 4 位区号和连字符。
  • \d{7,8}: 匹配 7 或 8 位数字。
  • (?:-\d+)?: 可选的任意数量的扩展号,以连字符分隔。
  • $: 匹配字符串的结尾。

二、使用场景

此正则表达式可用于验证以下格式的国内座机电话号码:

  • 0341-86091234
  • 89076543
  • 010-12345678-1234

三、代码示例

JavaScript

const regex = /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/;
const isValid = regex.test('0341-86091234');
console.log(isValid); // true

Java

import java.util.regex.Pattern;

public class TelephoneValidator {

    private static final Pattern PATTERN = Pattern.compile("^(?:(?:\\d{3}-)?\\d{8}|^(?:\\d{4}-)?\\d{7,8})(?:-\\d+)?
import java.util.regex.Pattern;

public class TelephoneValidator {

    private static final Pattern PATTERN = Pattern.compile("^(?:(?:\\d{3}-)?\\d{8}|^(?:\\d{4}-)?\\d{7,8})(?:-\\d+)?$");

    public static boolean isValid(String telephone) {
        return PATTERN.matcher(telephone).matches();
    }

    public static void main(String[] args) {
        String telephone = "0341-86091234";
        boolean isValid = isValid(telephone);
        System.out.println(isValid); // true
    }
}
quot;
); public static boolean isValid(String telephone) { return PATTERN.matcher(telephone).matches(); } public static void main(String[] args) { String telephone = "0341-86091234"; boolean isValid = isValid(telephone); System.out.println(isValid); // true } }

PHP

<?php

$pattern = "/^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/";
$isValid = preg_match($pattern, '0341-86091234');
echo $isValid ? '有效' : '无效'; // 有效
?>

Python

import re

pattern = r"^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?
import re

pattern = r"^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$"
isValid = re.match(pattern, '0341-86091234')
print(isValid) # <re.Match object; span=(0, 12), match='0341-86091234'>
quot;
isValid = re.match(pattern, '0341-86091234') print(isValid) # <re.Match object; span=(0, 12), match='0341-86091234'>