前瞻使用
前瞻
使用
前瞻的实际使用方式
前瞻的实际使用方式
前瞻(后顾JS不支持):实际使用情况相当于匹配ab后只修改a
前瞻:
正则表达式从文本头部向尾部开始解析,文本尾部方向,称为“前”
前瞻就是正则表达式匹配到规则的时候,向前检查是否符合断言,后顾方向相反
JavaScript不支持后顾
符合和不符合特定断言称为肯定/正向匹配和否定/负向匹配
// 正则表达式的前:文本尾部 // 正则表达式的后:文本头部 // 前瞻: 正则表达式匹配到规则时,向前检查,是否符合断言。 // 后顾/后詹:正则表达式匹配到规则时,向后检查,是否符合断言。 JS不支持后顾 // 肯定匹配/正向匹配:符合特定断言 expression: ?= // 否定匹配/负向匹配:不符合特定断言 expression: ?! 'a2*34vv'.replace(/\w(?=\d)/g, 'X') // 'X2*X4vv' 'a2*34vv'.replace(/\w(?!\d)/g, 'X') // 'aX*3XXX'
具体的 前瞻 和断言 匹配 示例
相对于 前瞻 什么叫 前 什么叫后
文本尾部方向 ,成为 前
见图示
JavaScript不支持"后顾"
前瞻 ?= (注意,好像数字也算单词?)
//匹配字母,且字母后面是数字(但数字不会被替换,有点条件的意思)
a2*34V8.repalce(/\w(?=\d)/g,'X') =X2*X4X8
前瞻的匹配
前瞻的意思是:
前面的字符匹配成功,到了后面的字符还需要满足一些条件(断言),前面的字符才能被匹配到,也就是逻辑运算中的“与,非”
扫描方向不同的两种说法
前瞻
匹配到的字符是断言((?=\d))前面的,
'a2*aa'.replace(/\w(?=\d)/,'H') //"H2*aa"单词字符后面是数字的
'dd4sfc'.replace(/\w(?!\d)/,'G'); //"Gd4sfc"单词字符后面不是数字的
regexp 前瞻
前瞻
①?=这部分用括号,称断言,表示符合,正向(肯定)前瞻但这部分不匹配
②?!表示不符合。反向(否定)前瞻。
js不支持任何后顾。
正则表达式从文本头部向尾部开始解析,文本尾部方向为“前”,头部方向为“后”
前瞻:正则表达式匹配到规则的时候,向前检查是否符合断言,后顾/后瞻方向相反(javascript不支持)
符合断言:肯定/正向匹配 不符合断言:否定/负向匹配
正向前瞻:exp(?=assert) 负向前瞻:exp(?!assert)
exp:规则部分 assert:断言部分
前瞻中断言只作为判断条件,不参与规则部分的操作
\w单词字符
'a2*34v8vv'.replace(/\w(?=\d)/g,'X')
"X2*X4X8vv"
匹配单词字符后面是数字的替换成X
'a2*34v8vv'.replace(/\w(?!\d)/g,'X')
"aX*3XvXXX"
匹配单词字符后面不是数字的替换成X
ssdddddddddddd
前瞻参与查找 但不参与替换
是 (?=) 不是(?!)