1. 验证
- 表单校验( 查找字符串中是否有匹配正则规则的字符 ) 如果满足就 XX, 如果没满足就 OO
- 提取字符串中的内容(分组) - 提取之后做后续操作(替换replace就是提取的后续操作)
- 切分 split
验证:查找字符串中是否有匹配正则规则的字符。 先来一道基础题Demo1 判断一个字符串中是否包含"hello" ( 判断字符串中是否包含某个字符串 )
String对象上的方法方法一: indexOf()
RegExp 对象上的方法方法五: test()
验证总结:切分
- 一个确认的( 精准匹配 )字符查找是否被包含, 使用String.indexOf() 和 String.includes()
- 一个有规则的( 模糊匹配 )字符查找是否被包含, 使用RegExp.test() 和 String.search()
- 查找不推荐, 使用String.match() 和 RegExp.exec()
切分:所谓"切分", 就是把目标字符串, 切分成一块一块的, 在 JS 中使用 splitDemo2 目标字符串是"html,css,javascript", 按逗号切分let regex = /,/;let str = "html,css,javascript";let str2 = "2018/10/18";console.log(str.split(regex));console.log(str2.split(/\//));复制代码
split() 方法使用指定的分隔符字符串将一个String对象分割成字符串数组, 以将字符串分隔为子字符串, 以确认每个拆分的位置
分隔符可以是一个字符串或正则表达式提取
提取:很多时候需要提取部分匹配的数据, 通常需要使用分组引用( 分组捕获 )Demo3 提取年月日方法一: match()
提取总结:本质上是捕获分组 推荐使用match和exec其中, 最常用的是match
String.prototype.match();参数: 一个正则表达式对象, 如果传入一个非正则表达式对象, 则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp, 如果你为提供任何参数, 直接使用 match(), 那么你会得到一个包含空字符串的数组[""]
返回值:如果字符串匹配到了表达式, 会返回一个数组, 数组第一项是进行匹配完整的字符串, 之后的项是用圆括号捕获的结果, 如果没有匹配到, 则返回 null
如果正则表达式不包含 g 标志, 则 str.match() 会返回和 RegExp.exec() 相同的结果。而且返回的Array拥有一个额外的input属性, 该属性包含被解析的原始字符串, 另外, 还拥有一个index属性, 该属性表示匹配结果在原字符中的索引
如果正则表达式包含 g 标志, 则该方法返回一个Array, 它包含所有匹配的子字符串而不是匹配对象, 捕获组不会被返回( 即不返回 index 属性和 input 属性 )。如果没有匹配到, 则返回null。
RegExp.exec() 方法在一个指定字符串中执行一个搜索匹配, 返回一个结果数组或 nullString.match() 和 RegExp.exec() 的主要区别
使用正则的目的, 往往是匹配到对应的规则的字符, 下一步常常是替换^_^
正则处理中最强大的 API, 划重点、划重点、划重点, 因为其常常被一些伪装者, 假借替换之名, 做一些皮肉生意Demo4 从 yyyy-mm-dd 替换成 yyyy/mm/ddreplace
String.replace(); 有两种使用形式, 第二个参数时字符串还是函数
一、当其为字符串时如下字符有特殊含义$1,$2 ... $99 匹配 1-99 个分组捕获的文本
二、当其为函数时, 回调函数的参数具体意义match( 匹配内容 ), $1( 分组1 ), $2( 分组2 ), index( 索引 ), input( 原字符内容 )总结


| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |