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

209 lines
5.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 常用
```
[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;
}
```