常用简单元字符
\bhi\b \b是用来匹配单词的 匹配两个b之间的单词
\. 匹配换行符以外任意的字符
\w 匹配任意字母,数字,下划线
\s 匹配任何空白字符串, 等价[\f\n\r\t\v]
\d 匹配数字
\un 匹配n,其中n是一个用四个十六进制数字表示的Unicode字符
限定符
* >= 0 次
? 0次或1次
+ >=1次
{n} 出现n次
{n,} >=n次
{n, m} 重复n到m次,包括n和m
“非”语义
\W 大写W,匹配任意不是字母、数字和下划线的字符
\S 大写S, 匹配任意不是空白字符的字符
\D 匹配任意非数字字符
\B 匹配不是单词开始或结束位置
[^aeiou] 匹配除了aeiou这5个字符以外的字符
"或"语义
[aeiou] 方括号,aeiou字符中任选一个,方括号可以理解为从方括号里的字符中任选一个
| 竖线,竖线前后任一正则满足即可,语义类似编程语言的逻辑“或”(短路?)
断言
^ 匹配字符串开始的位置
$ 匹配字符串结束的位置
(?=exp) 匹配一个位置,要求这个位置后面能匹配表达式exp
(?!exp) 匹配一个位置,要求这个位置后面不能匹配表达式exp
想表达"或"的意思 ------ 字符簇和分歧
[abc]表示 a、b、c这三个字符中的任意一个
[b-f]表示从b到f这么多字符中任选一个
括号的三个作用
1、括号的第一个作用 ---- 把分组当作一个整体看待
2、分组匹配到的内容也就是这个分组捕获到的内容,从左往右,以左括号为标志,每个分组会自动拥有一个从1开始的编号,分组捕获到的内容可以通过\分组编号的形式进行后向引用。 (ab|cd)123\1 -- \1就是后向引
3、括号第三个作用,可以改变优先级
修饰符(匹配选项)
加g修饰符 表示全局匹配
加i修饰符 表示不区分大小写
加m修饰符 表示多行模式 会改变^和$的行为
RegExp 上用来匹配提取的方法 ----- exec()
var matches = pattern.exec(str); //接受一个参数:源字符串 结果数组,在没有匹配项的情况下返回null
RegExp上用来测试匹配成功与否的方法 ----- test()
var result = pattern.test(str) // 接受一个参数,源字符串 返回: 找到匹配项 返回true 没找到返回false
String类型上的模式匹配方法
1、匹配捕获的match方法
str.match(pattern) => pattern.exec(str)
2、 返回索引search 方法
str.search(pattern) ==> 返回的是 pos 索引的位置
3、查找并替换的replace方法
str.replace(RegExp or String, String or Function);
第一个参数(查找)
第二个参数(替换内容)
第二个参数是一个函数
在只有一个匹配项的情况下,会传递3个参数给这个函数:模式的匹配项、匹配项在字符串中的位置、原始字符串
在有多个捕获组的情况下,传递的参数是模式匹配项、第一个捕获组、第二个、第三个...最后两个参数 是模式的匹配项在字符串位置、原始字符串
这个函数要返回一个字符串,表示要替换掉的匹配项
转义
前面加一个\ 表示转义
网友评论