正则表达式都是操作字符串的,由特殊字符与普通字符组成。




var pattern = /js/;
var str = "I love js"
var pattern = new RegExp('js', 'i');
console.log(pattern.test(str));
console.log(pattern.exec(str));
用变量创建模式

exec方法有input 就是输入的str
index就是开始匹配到的索引
修饰符

. 匹配除换行符以外的所有字符
语法
个数

{2} 匹配两个 {1,2}匹配1个或者2个 {1,3} 匹配1个或者3个
{1,} 匹配至少1个 ?用法等于 {0,1}
在? * + 后面加 ? 将贪婪匹配转为非贪婪匹配 只匹配一次


选择
| 选择匹配 a | ab 匹配a或者ab 从左边先开始匹配 从上到下
分组

将ab看为一个整体

在前加 ?: ab就不会被捕获 否则会输出 abc ab

从左边括号开始捕获 abc bc c

使用\1代表之前第一个分组中的内容 不属于分组
输出:

分组的应用


前瞻性匹配

只匹配后面为script的java

只匹配后面不为script的java
首尾匹配
^ $

只匹配数字
单词边界 \b
通俗一点讲,如果存在字符\w和\W相邻,那么这两个字符之间就有单词边界
全局匹配

输出结果:

test机制类似 返回true与false
第一行匹配第一个js 第二行匹配第二个 第四行返回 null 因为匹配完了
第五个又开始从第一个开始
但是第五个又是第0个索引 lastIndex重置为0
lastIndex:lastIndex从字面上来讲就是最后一个索引,实际上它的意思是正则表达式开始下一次查找的索引位置,第一次的时候总是为0的,第一次查找完了的时候会把lastIndex的值设为匹配到得字符串的最后一个字符的索引位置加1,第二次查找的时候会从lastIndex这个位置开始,后面的以此类推。如果没有找到,则会把lastIndex重置为0。


非全局匹配 lastIndex均为0
RegExp对象

1与2类似 返回字符串 3 返回他本身

1 判断有没有i
2 判断有没有g
3 判断有没有m
Pattern.source 返回字面量形式的字符串

匹配一个

input只有在调用了exec 或者test 后才能输出 就是输入的字符串str 别名 $_
lastMatch 最近一次匹配的字符 别名 $&
Left 匹配的字符 左边的字符
Paren 上次匹配到的子选项 j 分组
RegExp .$1 获取第一个分组 最多可以有9个

search返回 模式在字符串中匹配的位置 5 没有匹配到 返回-1
Search与 全局匹配g 关系不大 match 关系大 全局匹配在search中没用

match与exec 相像 匹配成功返回 否则返回null
Match 全局匹配时 一次返回所有匹配的


拆分

加不加g不重要


replace


引用

几个字就变成几个 *
正则表达式详解
869

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



