导图社区 正则表达式
涵盖正则的所有知识点,正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。
内容涵盖了系统架构设计师考试大纲中计算机网络的所有知识点,通过此图,可以清晰地理清知识脉络,掌握知识点的分步。
梳理了typescript全部知识点,TypeScript是一个很好的工具,即使您没有使用过它,也可以将其纳入你的学习计划中。从点滴开始学起,慢慢的你就会很快上手的,因为TypeScript的学习曲线对初学者非常友好。祝这张导图能够帮助你
一图汇总js全部数组api,改变原数组、不改变原数组、Array对象。包括使用方法、释义和示例等。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
正则表达式
创建
直接声明
var reg = / 正则表达式/ 标识
var reg=/a/g;
不能拼接,不需转义
构造声明
var reg = new RegExp( 正则表达式, 标识);
var reg=new RegExp('a','g')
可拼接,需转义
特性
贪婪性
特征
每一次会尽可能多的去捕获符合条件的内容
示例
/\d+/g捕获aswofde2015中的2015而非2
解决
在量词元字符后加?
懒惰性
捕获一次后不再继续捕获
/\d+/捕获123aaa456中的123而非123、456
标识符g来标明是全局捕获
属性
ignoreCase
【boolean】是否具有标志:i(大小写不敏感)
global
【boolean】是否具有标志:g(全局)
multiline
【boolean】是否具有标志:m(多行匹配)
lastIndex
【int】下一次匹配的字符位置,当g为true时有意义
source
【string】正则式源文本
修饰符
i
执行大小写不敏感的匹配
g
执行全局匹配
m
执行多行匹配
常用表达式
是否包含中文
/[\u4e00-\u9fa5]/g
邮箱
/^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,4}$/
相关方法
test()
是否存在匹配项,返回布尔
regObj.test(string)
exec()
查找匹配项,返回查找结果数组
regObj.exec(string)
search()
检索第一个匹配的字符串,无视g和lastIndex
string.search(RegObj)
match()
检索字符串,找到一个或多个与 regexp 匹配的文本
replace()
替换符合条件的子字符串
string.replace(regObj,replaceStr)
split()
将字符串分割为字符数组
string.split(regObj)
元字符
符号
\
转义
将下一个字符标记为一个特殊字符或一个原义字符等
数字
\d
匹配一个数字字符。等价于 [0-9]
\D
匹配一个非数字字符。等价于 [^0-9]
字符
\w
匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'
\W
匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'
空白
\s
匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]
\S
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]
集合
[xyz]
字符集合。匹配所包含的任意一个字符
[^xyz]
负值字符集合。匹配未包含的任意字符
[a-z]
字符范围。匹配指定范围内的任意字符
[^a-z]
负值字符范围。匹配任何不在指定范围内的任意字符
其他
\f
匹配一个换页符。等价于 \x0c 和 \cL
\n
匹配一个换行符。等价于 \x0a 和 \cJ
\r
匹配一个回车符。等价于 \x0d 和 \cM
\t
匹配一个制表符。等价于 \x09 和 \cI
位置
^
匹配开始位置,本身不占位置
$
匹配结束位置,本身不占位置
\b
匹配一个单词边界,也就是指单词和空格间的位置
'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'
\B
匹配非单词边界
'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'
量词
?
匹配前面的子表达式零 0-1 次
*
匹配前面的子表达式 0+ 次
+
匹配前面的子表达式 1+ 次
{}
{n}
匹配确定的 n 次
{n,}
至少匹配n 次
{n,m}
匹配n到m次
后接?,非贪婪模式匹配
零宽断言
?=exp
var str = "i'm singing and dancing"; var reg = /\b(\w+(?=ing\b))/g var res = str.match(reg); console.log(res) // ["sing", "danc"]
零宽度正预测先行断言
匹配右边出现exp的字符
?!exp
var str = 'nodejs'; var reg = /node(?!js)/; console.log(reg.test(str)) // false
零宽度负预测先行断言
匹配右边不能为exp的字符
?<=exp
var str = '¥998$888'; var reg = /(?<=\$)\d+/; console.log(reg.exec(str)) //888
零宽度正回顾后发断言
匹配左边出现exp的字符
?<!exp
var str = '¥998$888'; var reg = /(?<!\$)\d+/; console.log(reg.exec(str)) //998
零宽度负回顾后发断言
匹配左边不能为exp的字符