正则表达式中的边界与断言

原创 pvfhv 随笔 正则表达式 83阅读 2018-07-08 09:55:31 举报

正则表达式中的
\b单词边界 单词与符号之间的边界
\B非单词边界
这里的单词是指中文/英文单词,数字
符号是指中/英文符号,换行符,空格,制表符

断言:
查找某些东西之前或者之后的东西

(?=exp)用于匹配位置前面能匹配的值
\B(?=(\d{3})+$)在非边界的3位数字前位置
'1230456'.replace(/\B(?=(\d{3})+$)/g, ',')
输出:1,230,456

(?<exp)用于匹配的位置后面能匹配的值
(?<=\bhe)\w+\b 匹配he后面的字符,直到遇到符号
'hello world'.replace(/(?<=\bhe)\w+\b/g, ',')
输出:he, world

(?!exp)匹配值后面不能是exp
\bhe(?!o)\w he匹配后面的字母不能是o
'hello world'.replace(/\bhe(?!o)\w/g, ',') 匹配hel
输出:,lo world

(?<!exp)匹配值前面不能是exp
(?<!\d)[a-z]\w+ 字母前面不能有数字
'abc123 123aaa aabb'.replace(/(?<!\d)[a-z]\w+/g, '匹配')
输出:"匹配 123a匹配 匹配"

匹配连续重复
'abc abc abc efg efg'.replace(/\b(?<Word>\w+)\b\s+\k<Word>\b/g, '匹配')
输出:"匹配 abc 匹配"

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复