正则表达式(Regular Expression,简称正则或RegExp)是用于匹配字符串中字符组合的表达式。它是一种强大的工具,可以用于搜索、替换和提取字符串中的文本。
正则表达式由字符和操作符构成,用于描述字符串模式。以下是一些基本的正则表达式元素:
|----------|---------------|--------------------------------------------------------------|
| 字符类 | [abc] | 匹配字符串中的任意一个字符是 "a"、"b" 或 "c"。 |
| 字符类 | [abc] | 示例:正则表达式 /[abc]/
匹配字符串 "hello"
中的字符 "e"
,因为它是字符类中的一个字符。 |
| 字符类 | [^abc] | 匹配字符串中的任意一个字符不是 "a"、"b" 或 "c"。 |
| 字符类 | [^abc] | 示例:正则表达式 /[^abc]/
匹配字符串 "hello"
中的字符 "h"
,因为它不在字符类中。 |
| 元字符 | . | 匹配除换行符之外的任意一个字符。 |
| 元字符 | . | 示例:正则表达式 /he./
匹配字符串 "hello"
中的字符 "hel"
。 |
| 元字符 | ^
| 匹配字符串的开始。 |
| 元字符 | ^
| 示例:正则表达式 /^he/
匹配字符串 "hello"
,因为它在字符串的开头。 |
| 元字符 | ** | 匹配字符串的结束。 |
| **元字符** | ** | 示例:正则表达式 /lo$/
匹配字符串 "hello"
,因为它在字符串的末尾。 |
| 量词 | * | 匹配前面的元素零次或多次。 |
| 量词 | * | 示例:正则表达式 /ba*/
匹配字符串 "ba"
, "baa"
, "baaa"
等。 |
| 量词 | + | 匹配前面的元素一次或多次。 |
| 量词 | + | 示例:正则表达式 /ba+/
匹配字符串 "ba"
, "baa"
, 但不匹配 "b"
。 |
| 量词 | ? | 匹配前面的元素零次或一次。 |
| 量词 | ? | 示例:正则表达式 /ba?/
匹配字符串 "b"
和 "ba"
。 |
| 量词 | {n} | 匹配前面的元素恰好 n 次。 |
| 量词 | {n} | 示例:正则表达式 /ba{2}/
匹配字符串 "baa"
。 |
| 量词 | {n,} | 匹配前面的元素至少 n 次。 |
| 量词 | {n,} | 示例:正则表达式 /ba{2,}/
匹配字符串 "baa"
, "baaa"
等。 |
| 量词 | {n,m} | 匹配前面的元素至少 n 次但不超过 m 次。 |
| 量词 | {n,m} | 示例:正则表达式 /ba{2,4}/
匹配字符串 "baa"
, "baaa"
, "baaaa"
。 |
| 特殊字符 | \ | 转义字符,用于匹配特殊字符。 |
| 特殊字符 | \ | 示例:正则表达式 /\d/
匹配字符串 "123"
, 不匹配 "abc"
。 |
| 特殊字符 | | | 或操作符,匹配两者之一。 |
| 特殊字符 | | | 示例:正则表达式 /cat|dog/
匹配字符串 "cat"
或 "dog"
。 |
常用正则表达式涵盖了一系列常见的文本匹配需求。以下是一些常用的正则表达式示例:
匹配数字:
- 匹配整数:
/^\d+$/
- 匹配浮点数:
/^\d+(\.\d+)?$/
- 匹配正整数:
/^[1-9]\d*$/
- 匹配非负整数:
/^\d+$/
匹配字母和数字:
- 匹配由数字和字母组成的字符串:
/^[a-zA-Z0-9]+$/
匹配邮箱地址:
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
匹配手机号码:
/^1[3456789]\d{9}$/
匹配日期:
- 匹配 yyyy-mm-dd 格式的日期:
/^\d{4}-\d{2}-\d{2}$/
- 匹配 yyyy/mm/dd 格式的日期:
/^\d{4}\/\d{2}\/\d{2}$/
匹配 URL:
/^(http|https):\/\/\w+(\.\w+)+([\w\-.,@?^=%&:/~+#]*[\w\-@?^=%&/~+#])?$/
匹配 IP 地址:
/^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/
匹配中文字符:
/[\u4e00-\u9fa5]/
匹配 HTML 标签:
/<\/?[^>]+(>|$)/
匹配用户名:
/^[a-zA-Z0-9_-]{3,16}$/
参考资料: