Note/扩展知识/正则表达式应用.txt

209 lines
5.3 KiB
Plaintext
Raw Normal View History

2024-06-26 15:27:17 +08:00
### 常用
```
[abc] - 单个字符: a 或 b 或 c
[^abc] - a, b, c 以外的单个字符
[a-zA-Z0-9] - 字符范围: 字母或数字
. - 任意字符
\s - 空字符
\S - 非空字符
\d - 数字字符
\D - 非数字字符
\w - 单词(字母,数字,下划线)
\W - 非单词
\b - 单词边界
\B - 非单词边界
^ - 开头
$ - 结尾
(a|b) - a 或 b
a* - 重复 0 次或多次
a? - 重复 0 次或 1 次
a+ - 重复 1 次或多次
a{3} - 重复 3 次
a{3,} - 重复 3 次或多次
a{3,5} - 重复 3 到 5 次
? - 非贪婪匹配
(...) - 分组
(?:a) - 非捕获分组
a(?=b) - 正向断言
a(?!b) - 正向否定断言
(?<=b)a - 反向断言
(?<!b)a - 反向否定断言
(?<name>a) - 命名分组
\k<name> - 命名反向引用
\n - 反向引用n 为 99 以内的十进制数字
\xhh - 十六进制 hh 字符
\uhhhh - 十六进制 hhhh 字符
\u{hhhh} - (设置了 u 标志时) 十六进制 hhhh 字符
\cX - 控制字符
\0 - 空字符
\a - alert 字符
\t - 制表符
\n - 换行符
\v - 垂直制表符
\f - 换页符
\r - 回车符
\e - escape 字符
[\b] - 退格符
```
### 用户名和密码
1. 用户名和密码格式验证:
- 正则表达式: `^[a-zA-Z]\w{5,15}$`
- 正确格式: 字母开头6~16位包含字母、数字、下划线
### 电话号码
1. 电话号码格式验证:
- 正则表达式: `^(\d{3,4}-)\d{7,8}$`
- 正确格式: 区号-号码 或 区号号码
### 手机号码
1. 手机号码格式验证:
- 正则表达式: `^1[3|4|5|7|8][0-9]\d{8}$`
### 身份证号
1. 身份证号格式验证:
- 正则表达式: `\d{14}[[0-9],0-9xX]`
### Email地址
1. Email地址格式验证:
- 正则表达式: `^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$`
### 字符串组成
1. 数字和字母组成的字符串:
- 正则表达式: `^[A-Za-z0-9]+$`
### 数字
1. **整数或小数:**
- 正则表达式: `^[0-9]+([.][0-9]+){0,1}$`
2. **只能输入数字:**
- 正则表达式: `^[0-9]*$`
3. **n位数字:**
- 正则表达式: `^\d{n}$`
4. **至少n位数字:**
- 正则表达式: `^\d{n,}$`
5. **m~n位数字:**
- 正则表达式: `^\d{m,n}$`
6. **零和非零开头的数字:**
- 正则表达式: `^(0|[1-9][0-9]*)$`
7. **有两位小数的正实数:**
- 正则表达式: `^[0-9]+(\.[0-9]{2})?$`
8. **1~3位小数的正实数:**
- 正则表达式: `^[0-9]+(\.[0-9]{1,3})?$`
9. **非零的正整数:**
- 正则表达式: `^\+?[1-9][0-9]*$`
10. **非零的负整数:**
- 正则表达式: `^\-[1-9][0-9]*$`
### 字符串长度
1. **长度为3的字符:**
- 正则表达式: `^.{3}$`
2. **由26个英文字母组成的字符串:**
- 正则表达式: `^[A-Za-z]+$`
3. **由26个大写英文字母组成的字符串:**
- 正则表达式: `^[A-Z]+$`
4. **由26个小写英文字母组成的字符串:**
- 正则表达式: `^[a-z]+$`
### 特殊字符
1. 验证是否含有特殊字符:
- 正则表达式: `[%&',;=?$\\^]+`
### 汉字
1. 只能输入汉字:
- 正则表达式: `^[\u4e00-\u9fa5]{0,}$`
### URL
1. 验证URL:
- 正则表达式: `^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$`
### 月份和日期
1. **一年的12个月:**
- 正则表达式: `^(0?[1-9]|1[0-2])$`
2. **一个月的31天:**
- 正则表达式: `^((0?[1-9])|((1|2)[0-9])|30|31)$`
3. **日期格式:**
- 正则表达式: `\d{4}[年|\-|\.]\d{\1-\12}[月|\-|\.]\d{\1-\31}日?`
### 其他
1. **匹配双字节字符:**
- 正则表达式: `[^\x00-\xff]`
2. **匹配空白行:**
- 正则表达式: `\n\s*\r`
3. **匹配HTML标记:**
- 正则表达式: `<(\S*?)[^>]*>.*?</>|<.*? />`
4. **匹配首尾空白字符:**
- 正则表达式: `^\s*|\s*$`
5. **匹配网址URL:**
- 正则表达式: `[a-zA-z]+://[^\s]*`
6. **帐号是否合法:**
- 正则表达式: `^[a-zA-Z][a-zA-Z0-9_]{4,15}$`
7. **腾讯QQ号:**
- 正则表达式: `[1-9][0-9]{4,}`
8. **中国邮政编码:**
- 正则表达式: `[1-9]\d{5}(?!\d)`
9. **IP地址:**
- 正则表达式: `([1-9]{1,3}\.){3}[1-9]`
10. **MAC地址:**
- 正则表达式: `([A-Fa-f0-9]{2}\:){5}[A-Fa-f0-9]`
### 函数
1. **正则表达式校验函数 (IsRegu):**
```vbscript
Function IsRegu(Regu, s)
' 正则表达式校验
If Regu = "" Then
Exit Function
End If
Dim Re, Sre
Set Re = New RegExp
Re.Pattern = Regu
Sre = Re.Test(s)
If Sre = True Then
IsRegu = True
Else
IsRegu = False
End If
End Function
```
2. **验证URL:**
```javascript
function IsValidUrl(str) {
var regu = "^(https?://)"
+ "?(([0-9a-z_!~*'().&=+$%-]+:)?[0-9a-z_!~*'().&=+$%-]+@)?"
+ "(([0-9]{1,3}\.){3}[0-9]{1,3}"
+ "|"
+ "([0-9a-z_!~*'()-]+\.)*"
+ "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\."
+ "[a-z]{2,6})"
+ "(:[0-9]{1,4})?"
+ "((/?)|"
+ "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
var re = new RegExp(regu);
if (!re.test(str)) {
return false;
}
return true;
}
```