正则表达式(js)
正则字符串提取数字
- 使用\d将数字匹配出来 /g全局匹配
1 | let hd = 'daw21321dasda23123123'; |
正则字变量
- 使用eval()方法
- 使用test()方法返回的是布尔值
1 | let hd = 'daw21321dasda23123123'; |
使用对象创建
- 替换字符串中匹配到的字符
1 | <div class="content">mr90.top</div> |
选择符 |
- 匹配左右两侧的条件
- 原子组() 原子表[]
1 | let tel = '023-2312322' |
转义
- 在字面量里面 使用
\d \.
将字符可实现转义 - 在构造函数中
\d \.
表示的是该字符 所以 必须再加一个转义符\\d \\.
1 | let price = '[email protected]'; |
字符边界符
- 边界符表示开始和结尾必须满足条件
/^[a-z]$/
{3,6}
加入边界字符 才能控制其数量范围
1 | <input type="text" value="" name="user"> |
数值与空白元字符
\d
匹配数字\D
匹配非数字- 在原子表中首页
^
表示非的意思/[^]/
\s
表示匹配空白和换行\S
非空白
1 | let hd = '张三:021-9999299,李四:022-2122122' |
w和W元字符
\w
匹配字母和数字 下划线\W
与之相反
点字符的使用
- 匹配所有字符默认模式下,它匹配除了换行符以外的任意字符。
1 | let hd = `wad\nawd\n` |
匹配所有字符
- 在原子组中
[\s\S]
或者[\d\D]
- 匹配标签使用
/<span>[\s\S]+</span>/
i和g 模式修正
g
全局匹配i
不区分大小写
1 | let hd = ` |
汉字与字符属性
\p
表示匹配字符\P
相反
lastIndex
- lastIndex 属性用于规定下次匹配的起始位置
exec()
方法用于检索字符串中的正则表达式的匹配。
1 | let hd = 'dawdaw31'; |
y模式
- 后一次匹配都是从上一次匹配成功的下一个位置开始
1 | let hd =`你好世界大王大大:11111111,1111231,213123212, |
原子表
[]
匹配中括号内的所有条件- 原子组和原子表搭配使用
1 | let times = '2020-02/21' |
区间匹配
- 数字区间
[0-9]+
加号表示贪婪模式 - 字母区间
[a-z]
排除匹配
[^]
表示排除匹配\p
表示匹配满足{}
内的字符
1 | // let hd = 'u.mr90.top' |
原子表字符不解析
[.+]
[()]
仅表示原来字符的意思
原子表匹配
s
忽略换行符*
表示0个或者多个[\d\D] [\s\S]
匹配所有字符
1 | <body> |
原子组
()
表示一个整体- 可进行别名的编号
- 使用原子组实现标签的替换
- 在原子组回调函数中,各个参数表示的是 第一个是满足条件的所有内容 其他参数 依次为定义的满足原子组条件的内容
1 | <body> |
不记录分组
- 使用不记录分组,就是使用原子组后 无法再去使用函数参数去调用
1 | let url = `https://u.mr90.top |
重复匹配
+
一个或者多个{1,}
类似与加号*
0个或者多个{0,}
类似与*号?
0个或者1个
批量使用正则完成密码的验证
1 | // 对表单输入的值进行验证 |
禁止贪婪
{2,}?
限制贪婪*?
禁止贪婪
1 | <body> |
matchAll 全局匹配
1 | <body> |
exec 全局匹配
- 匹配时
g
不能缺少 search
返回匹配的索引值
1 | // exec方法 匹配全局 |
$符
$`
匹配开头的第一个字符$'
匹配结尾字符$&
匹配自身
1 | // let tel = '2020/12/23' |
原子组的别名
- 格式
?<别名>
- 调用
<别名>
1 | <body> |
断言匹配 ?=
(?=)
表示在之前条件的后面满足该断言匹配的内容(?<=)
表示前面是条件的匹配内容(?!)
表示后面不是某个条件的内容(?<!)
表示前面不是某个条件的内容
1 | <body> |
手机号码断言隐藏
1 | let users = ` |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Harry の 心 阁!
评论