正则表达式
-
创建正则表达式
-
利用RegExp对象创建
var reg = new RegExp(/123/); console.log(reg) // /123/ -
字面量创建
var reg = /123/; console.log(reg) // /123/ -
正则.exec( str ) 从字符串里获取符合正则表达式的一部分片段
=> 返回值:
1. 字符串里面没有符合规则的片段
-> null
2. 字符串里面有符合规则的片段
2-1. 基础捕获
-> 返回值是一个数组
-> [0] 是捕获出来的片段
-> 不管有多少个片段, 都只是捕获第一个片段
-> 不管捕获多少次, 都是第一个片段
2-2. 当正则表达式有 () 的时候
-> 返回值是一个数组
-> 从 索引[1] 开始依次是每一个小括号的单独捕获
2-3. 当正则有全局标识符 g 的时候
-> 第二次捕获会从第一次捕获的结束为开始继续向后查找
-> 直到找不到了位置, 返回 null
-> 再后面一次捕获, 依旧会从 [0] 位置开始查找
const reg = /abcd/g const reg1 = /(b)/ const res = reg1.exec('aaabbbcccddd') console.log(res) //返回一个数组集合 const res2 = reg.exec('aaabcdddddabcdabcd') console.log(res2) //返回一个数组集合 -
正则.test( str ) 检测字符串是否符合正则表达式规范 符合返回true 不符合返回false
-
var reg = /123/ 只要包含123就可以
console.log(reg.tedt(123)) //true
console.log(reg.test('abcd')) //false
-
正则表达式特殊字符
-
^ 以…为开头 /^abc/ 只能以abc开头
-
$ 以…为结尾 /abc/只能以abc结尾/abc/ 只能以abc结尾 /^abc/只能以abc结尾/abc/ 必须是abc
-
[abc]表示有一系列字符可以选择,只匹配一个
-
\s 表示一个空格
-
\S 表示一个非空格
-
\t 表示一个制表符(tab) => 一个制表符就是制表符, 不是多个空格
-
\d 表示一个数字
-
\D 表示一个非数字
-
\w 表示一个 数字字母下划线 => 表示 数字 字母 下划线 三选一
-
\W 表示一个 非数字字母下划线 => 表示 数字 字母 下划线 以外的任意一个都行
-
点(.) 表示非换行的任意字符
-
* 表示出现 0 ~ 多次
-
+ 表示出现 1 ~ 多次
-
? 表示出现 0 ~ 1 次
-
{n} 表示出现 n 次
-
{n,} 表示出现 n ~ 多次
=> {0,} 等价于 *
=> {1,} 等价于 +
-
{n,m} 表示出现 n ~ m 次
=> {0,1} 等价于 ?
-
+? 在捕获的时候会捕获能捕获到的最大长度
-
*? 在捕获的时候会按照最少的数量来捕获
-
?? 在捕获的时候会按照最少的数量来捕获
-
{n}? 在捕获的时候会按照最少的数量来捕获 最少n个
-
{n,}? 在捕获的时候会按照最少的数量来捕获 最少n个
-
{n,m}? 在捕获的时候会按照最少的数量来捕 最少n个
-
-
正则的预查
-
?= 在捕获一个内容的时候, 后面必须跟着是我选择的某一个才可以
// 字符串是 ES2015 或者 ES2016 是可以捕获的 // 但是我只捕获 ES 不需要 2015 或者 2016 const reg = /ES(?=2015|2016)/ console.log(reg.exec('ES2015')) //返回一个数组集合 console.log(reg.exec('ES2016')) //null console.log(reg.exec('ES')) //null -
?! 在捕获一个内容的时候, 后面必须跟着不是我选择的某一个才可以
const reg2 = /ES(?!2015|2016)/ console.log(reg2.exec('ES2015')) //null console.log(reg2.exec('ES2016')) //null console.log(reg2.exec('ES2017')) //返回数组集合 -
?<= 在捕获一个内容的时候, 前面必须是我选择的某一个才可以
reg = /(?<=2015|2016)ES/ console.log(reg.exec('2015ES')) console.log(reg.exec('2016ES')) console.log(reg.exec('2017ES'))//null -
?<! 在捕获一个内容的时候, 前面必须不是我选择的某一个才可以
const reg2 = /(?<!2015|2016)ES/ console.log(reg2.exec('2015ES'))//null console.log(reg2.exec('2016ES'))//null console.log(reg2.exec('2017ES'))
-
本文详尽地介绍了JavaScript中的正则表达式,包括如何创建正则表达式,使用RegExp对象和字面量方式。重点讲解了正则的 exec 和 test 方法,以及正则表达式的特殊字符和量词。此外,还提到了预查操作符的重要用法。
765

被折叠的 条评论
为什么被折叠?



