题解 | 电话号码格式校验
电话号码格式校验
https://www.nowcoder.com/practice/2c2453e909c04c29a04c11e9d6b2c769
select * from contacts where phone_number regexp '^[1-9][0-9]{9}$' or phone_number regexp '^[1-9][0-9]{2}-[0-9]{3}-[0-9]{4}$';
1. 正则表达式解析
第一个格式 ^[1-9][0-9]{9}$
- 含义:匹配 10位连续数字,且第一位不能是 0。
- 分解:^ 表示字符串开始。[1-9] 第一位是 1-9 中的任意一个数字(排除 0)。[0-9]{9} 后续 9 位是任意数字(0-9)。$ 表示字符串结束。
- 示例:1234567890。
第二个格式 ^[1-9][0-9]{2}-[0-9]{3}-[0-9]{4}$
- 含义:匹配 带连字符的格式,如 123-456-7890。
- 分解:^ 字符串开始。[1-9][0-9]{2} 前 3 位,第一位非 0,后两位任意。- 连字符分隔符。[0-9]{3} 中间 3 位任意数字。- 连字符分隔符。[0-9]{4}$ 最后 4 位任意数字,字符串结束。
- 示例:123-456-7890。