返回
正则表达式教程:座机电话号码验证
正则表达式
2024-02-28 16:00:02
一、正则解释
^(?:(?:\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'>