正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换。
正则表达式修饰符
修饰符 可以在全局搜索中不区分大小写:
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
正则表达式模式
方括号用于查找某个范围内的字符:
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
(x|y) | 查找任何以 | 分隔的选项。 |
元字符是拥有特殊含义的字符:
元字符 | 描述 |
---|---|
\d | 查找数字。 |
\s | 查找空白字符。 |
\b | 匹配单词边界。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
量词:
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
正则表达式验证
用户名正则
用户名: 4到16位(字母,数字,下划线,减号)1
2
3
4function isUsername(str) {
var reg = /^[a-zA-Z0-9_-]{4,16}$/;
return reg.test(str);
}
密码正则
密码: 最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符1
2
3
4function isPassword(str) {
var reg = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
return reg.test(str);
}
整数正则
1 | function isInteger(str) { |
数字正则
数字: 可以是整数也可以是浮点数1
2
3
4
5
6
7
8function isNumber(str) {
var str1 = /^\d*\.?\d+$/; //正数正则
var str2 = /^-\d*\.?\d+$/; //负数正则
var str3 = /^-?\d*\.?\d+$/; //数字正则
return reg.test(str1);
return reg.test(str2);
return reg.test(str3);
}
Email正则
1 | function isEmail(str) { |
手机号码正则
手机号码: 11位,第一位为11
2
3
4function isPhoneNumber(str) {
var str = /^1[34578]\d{9}$/;
return reg.test(str);
}
身份证号正则
身份证号: 18位数字,最后一位可以是“X”1
2
3
4function isId(str) {
var str = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
return reg.test(str);
}
URL正则
1 | function isURL(str) { |
IPv4地址正则
1 | function isIPv4(str) { |
十六进制颜色正则
1 | function isRGBHex(str) { |
日期正则
1 | function isDate(str) { |
QQ号码正则
QQ: 5至11位数字,开头不能为01
2
3
4function isQQ(str) {
var str = /^[1-9][0-9]{4,10}$/;
return reg.test(str);
}
微信号正则
微信号: 6至20位,以字母开头,字母,数字,减号,下划线1
2
3
4function isWechat(str) {
var str = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/;
return reg.test(str);
}
车牌号正则
1 | function isPlateNumber(str) { |
包含中文正则
1 | function isChinese(str) { |