概念
正则表达式可以用来匹配字符串
通过正则表达式,可以实现字符串的截取或按规则替换和验证字符串内容
例如:
- 验证邮箱格式
- 字符串"2020-01-01" , 可以将其数字部分截取出来
- "123a456b789c" , 去掉字符串中的所有字母(replace("a" , "1"))。
正则表达式独立于语言,很多语言都支持正则表达式(并非JavaScript特性)
创建正则表达式
var reg = new RegExp("123") 完整写法
var reg = /123/ // 简洁写法
类似数组 new Array() 与 []
正则表达式的语法
^ | 开头 |
& | 结尾 |
[] | 范围 |
{} | 位数 |
() | 分组 |
+ | 匹配1位或多位,同 {1,} |
? | 0位或1位,同 {0,1} |
. | 匹配所有 |
\ | 转义,需要匹配特殊符号的时候用 |
\d | 数字 |
\w | 数字、字母、下划线 |
\s | 空格或换行 |
常用正则表达式
用户名 | /^[a-z0-9_-]{3,16}$/ |
---|---|
密码 | /^[a-z0-9_-]{6,18}$/ |
十六进制值 | /^#?([a-f0-9]{6}|[a-f0-9]{3})$/ |
电子邮箱 | /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ |
URL | /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ |
IP 地址 | /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ |
HTML 标签 | /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ |
删除代码\\注释 | (?<!http:|\S)//.*$ |
Unicode编码中的汉字范围 | /^[\u2E80-\u9FFF]+$/ |
字符串替换
// 字符串替换
var str = "123abc456DEF"
// 去掉字符串中的字母
// 不写^跟$ 不然只匹配一位字母
var reg = /[a-zA-Z]/g // g:全局匹配(找到字符串所有能匹配的内容)
var result = str.replace(reg, "9") // 将正则匹配到的所有字母替换成9
console.log(result);
截取字符串(使用小括号截取)
// 截取字符串
// 用户输入
var str = "2019-12-01"
// 截取字符串
var reg = /^(\d{4})-(\d{2})-(\d{2})$/
var result = reg.exec(str)
console.log(result[1]);
console.log(result[2]);
console.log(result[3]);