正则表达式(3)常见的正则表达式及语法明细

发布于:2025-03-09 ⋅ 阅读:(111) ⋅ 点赞:(0)

数字校验

数字校验的正则表达式用于验证字符串是否符合数字格式的要求,例如整数、小数、正负数等。

  • 整数

    • 非负整数:^\d+$

    • 负整数:^-\d+$

    • 任意整数(包括0):^-?\d+$

  • 小数

    • 非负小数:^\d+(\.\d+)?$

    • 负小数:^-\d+(\.\d+)?$

    • 任意小数:^-?\d+(\.\d+)?$

  • 正负数

    • 非负数:^\d+(\.\d+)?$

    • 负数:^-\d+(\.\d+)?$

    • 任意正负数:^-?\d+(\.\d+)?$

字符校验

字符校验的正则表达式用于验证字符串是否符合字符格式的要求,例如字母、字母数字等。

  • 字母

    • 任意字母:^[a-zA-Z]+$

    • 大写字母:^[a-zA-Z]+$

    • 小写字母:^[a-z]+$

  • 字母数字

    • 任意字母数字:^[a-zA-Z0-9]+$

    • 以字母开头的字母数字:^[a-zA-Z][a-zA-Z0-9]*$

特殊需求校验

特殊需求校验的正则表达式用于验证字符串是否符合特定格式的要求,例如日期、时间、电话号码、电子邮件地址等。

  • 日期(YYYY-MM-DD)

    • ^\d{4}-\d{2}-\d{2}$

    • 进一步验证月份和日期的有效性:^(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-(19|20)\d{2}$

  • 时间(HH:MM:SS)

    • ^([01]?[0-9]|2[0-3]):([0-5]?[0-9]):([0-5]?[0-9])$

    • 进一步验证时间的有效性:^(0[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$

  • 电话号码

    • 国际格式:^\+?[1-9]\d{1,14}$

    • 美国格式:^\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4}$

  • 电子邮件地址

    • 简单验证:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

    • 进一步验证:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$

正则表达式的语法明细

类别 符号/模式 描述 示例匹配
字符匹配 普通字符 直接匹配字符本身 a 匹配 "a",5 匹配 "5"
特殊字符 在正则表达式中具有特殊含义的字符,需用 \ 转义 . 匹配除换行外的任意字符
元字符 . 匹配除换行符以外的任意单个字符 a.c 匹配 "abc"、"axc"
^ 匹配输入字符串的开始位置 ^hello 匹配 "hello"
$ 匹配输入字符串的结束位置 world$ 匹配 "helloworld"
* 匹配前面的字符零次或多次 a*b 匹配 "b"、"ab"、"aaab"
+ 匹配前面的字符一次或多次 a+b 匹配 "ab"、"aaab"
? 匹配前面的字符零次或一次 a?b 匹配 "b"、"ab"
` ` 逻辑或操作符,匹配两个表达式中的任意一个 `red blue` 匹配 "red" 或 "blue"
\b 匹配一个单词边界 \bhello\b 匹配 "hello"
\B 匹配非单词边界 \Bhello\B 匹配 "hello there"
\d 匹配任意数字,等同于 [0-9] \d 匹配 "0" 到 "9"
\D 匹配任意非数字字符,等同于 [^0-9] \D 匹配除 "0" 到 "9" 外的字符
\s 匹配任意空白字符 \s 匹配空格、制表符等
\S 匹配任意非空白字符 \S 匹配除空格、制表符外的字符
\w 匹配任意字母数字字符,包括下划线,等同于 [a-zA-Z0-9_] \w 匹配 "a" 到 "z"、"0" 到 "9"、"_"
\W 匹配任意非字母数字字符,等同于 [^a-zA-Z0-9_] \W 匹配除 "a" 到 "z"、"0" 到 "9"、"_" 外的字符
特殊序列 \t 匹配制表符 \t 匹配制表符
\n 匹配换行符 \n 匹配换行符
\r 匹配回车符 \r 匹配回车符
\f 匹配换页符 \f 匹配换页符
\n 匹配数字,n 是一个正整数 \n 匹配数字 "n"
\xhh 匹配十六进制值 hh 表示的字符 \x41 匹配 "A"
\uhhhh 匹配 Unicode 值 hhhh 表示的字符 \u0041 匹配 "A"
字符类 [abc] 匹配 "a"、"b" 或 "c" 中的任意一个字符 [abc] 匹配 "a"、"b"、"c"
[^abc] 匹配除了 "a"、"b"、"c" 之外的任意字符 [^abc] 匹配除 "a"、"b"、"c" 外的字符
[a-z] 匹配任意小写字母 [a-z] 匹配 "a" 到 "z"
[A-Z] 匹配任意大写字母 [A-Z] 匹配 "A" 到 "Z"
[0-9] 匹配任意数字 [0-9] 匹配 "0" 到 "9"
数量词 n* 匹配前面的字符零次或多次 a*b 匹配 "b"、"ab"、"aaab"
n+ 匹配前面的字符一次或多次 a+b 匹配 "ab"、"aaab"
n? 匹配前面的字符零次或一次 a?b 匹配 "b"、"ab"
n{m} 匹配前面的字符恰好 m 次 a{3}b 匹配 "aaab"
n{m,} 匹配前面的字符至少 m 次 a{3,}b 匹配 "aaab"、"aaaab"
n{m,n} 匹配前面的字符至少 m 次,最多 n 次 a{3,5}b 匹配 "aaab"、"aaaab"、"aaaaaab"
分组 (...) 捕获组,匹配括号内的内容,并可以被后续引用 (abc) 匹配 "abc"
(?:...) 非捕获组,匹配括号内的内容,但不捕获匹配的内容 (?:abc) 匹配 "abc"
` ` 选择组,匹配两个表达式中的任意一个 `(red blue)` 匹配 "red" 或 "blue"
\1\2... 反向引用,引用之前捕获组匹配的内容 (abc)\1 匹配 "abcabc"
断言 ^ 正向肯定断言,匹配字符串的开始 ^hello 匹配 "hello"
$ 正向肯定断言,匹配字符串的结束 world$ 匹配 "helloworld"
(?=...) 正向肯定查找,匹配后面跟着特定模式的字符串 hello(?=world) 匹配 "helloworld"
(?!...) 正向否定查找,匹配后面不是特定模式的字符串 hello(?!world) 匹配 "hello there"
(?<=...) 反向肯定查找,匹配前面是特定模式的字符串 (?<=hello)world 匹配 "helloworld"
(?<!...) 反向否定查找,匹配前面不是特定模式的字符串 (?<!hello)world 匹配 "world"

网站公告

今日签到

点亮在社区的每一天
去签到