regexp中正则表达式符号的各种功能

1. 基本匹配符号

.
  • 功能:匹配任意单个字符(除换行符外)。
^
  • 功能:匹配字符串的开始位置。
$
  • 功能:匹配字符串的结束位置。

2. 字符类

[ ]
  • 功能:匹配方括号内的任意一个字符。
[^ ]
  • 功能:匹配不在方括号内的任意一个字符(取反)。

*(零次或多次)

功能:前面的字符或表达式可以出现 0 次、1 次或多次
关键:即使前面的字符完全不出现,也会匹配成功。

+(一次或多次)

功能:前面的字符或表达式必须出现 至少 1 次
关键:如果前面的字符不出现,则匹配失败。

( )
  • 功能:将表达式分组,用于优先级或应用重复限定符。

 特殊字符与转义

\
  • 功能:转义特殊字符,使其作为普通字符匹配。
    'a.b' REGEXP 'a\\.b';     -- 返回1(匹配字面量 .)
    'ab' REGEXP 'a\\.b';      -- 返回0

{n} - 恰好重复 n 次

功能:要求前面的字符或表达式严格重复 n 次,不能多也不能少。
语法X{n}(X 代表任意字符或表达式)

'abbb' REGEXP 'ab{3}';   -- ✅ 返回1(b重复3次,符合要求)
'abb' REGEXP 'ab{3}';    -- ❌ 返回0(b只重复2次)
'abbbb' REGEXP 'ab{3}';  -- ❌ 返回0(b重复4次,超过限制)

2. {n,} - 至少重复 n 次

功能:要求前面的字符或表达式至少重复 n 次,上不封顶。
语法X{n,}(X 代表任意字符或表达式)

'abbb' REGEXP 'ab{2,}';  -- ✅ 返回1(b重复3次,满足"至少2次")
'abb' REGEXP 'ab{2,}';   -- ✅ 返回1(b重复2次,刚好满足)
'ab' REGEXP 'ab{2,}';    -- ❌ 返回0(b只重复1次)

3. {n,m} - 重复 n 到 m 次(包含边界)

功能:要求前面的字符或表达式重复次数在 n 和 m 之间(包含 n 和 m)
语法X{n,m}(X 代表任意字符或表达式)

我们用手机号验证的场景来解释 {n}{n,} 和 {n,m} 的用法,这样会更直观。

1. 中国手机号规则

中国手机号通常是 11 位数字,格式为:

  • 以 1 开头
  • 第二位通常是 3-9(如 13x15x18x 等)
  • 后面跟着 9 位任意数字

2. 使用 {n} 验证固定长度

需求:验证字符串是否为 11 位数字(不考虑开头是否为 1)。
正则^\\d{11}$
解释

  • ^:字符串开头
  • \\d{11}:恰好 11 位数字
  • $:字符串结尾

3. 使用 {n,} 验证最小长度

需求:验证字符串是否为 至少 11 位数字(可能包含多余数字,如区号或分机号)。
正则^\\d{11,}$
解释

  • ^:字符串开头
  • \\d{11,}:至少 11 位数字
  • $:字符串结尾

4. 使用 {n,m} 验证范围长度

需求:验证字符串是否为 11-13 位数字(考虑可能包含区号或分机号)。
正则^\\d{11,13}$
解释

  • ^:字符串开头
  • \\d{11,13}:数字长度在 11 到 13 位之间(包含 11 和 13)
  • $:字符串结尾

. 结合手机号规则的完整验证

需求:验证标准中国手机号(11 位,以 1 开头,第二位为 3-9)。
正则^1[3-9]\\d{9}$
解释

  • ^1:以 1 开头
  • [3-9]:第二位是 3-9 中的任意数字
  • \\d{9}:后面跟着 9 位任意数字
  • $:字符串结尾

手机号示例中的 \\d

在手机号验证的正则 ^1[3-9]\\d{9}$ 中:

  • \\d{9} 表示 9 位任意数字
  • 如果写成 ^1[3-9]d{9}$(没有双反斜杠),正则会把 d 当作普通字符,导致只能匹配 d 字母本身,而不是数字。

你可能感兴趣的:(正则表达式)