Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
55 lines (38 sloc) 1.51 KB
layout title description tags category keywords date
post
正则表达式 - 环视功能
正则表达式里的环视功能
regexr
js
regexr
2015-07-22 16:47:47 -0700

lookaround 环视功能

环视结构不匹配人和自负, 只匹配文本中的特定位置

顺序环视(从左到右)

abcd ab abd

/a(?=bc)/g 匹配上述文本中的字母 a, 顺序环视, 其中(?=bc) 表示匹配 bc 的左文本位置, 也就是 a^bcd ^ 的位置

顺序环视会检查子表达式 (?=bc) 能否匹配成功, 但它只寻找能够匹配的位置, 而不会真正占用这些字符

逆序环视(从右到左)

Note: 与顺序环视相反, JavaScript 不支持 逆序环视 !

/(?<=bc)d/g 匹配上述文本中的字母 d, 逆序环视, 其中(?<=bc) 表示匹配 bc 的右文本位置, 也就是 abc^d ^ 的位置

实战

使用环视功能实现 JavaScript 数字三位分割

var money = '1234567890';
money = money.replace(/(\d)(?=(\d\d\d)+$)/g, function($1) {
    return $1 + ',';
})
console.log(money); // 1,234,567,890

四种类型的环视 P66

类型 正则表达式 匹配成功的条件
肯定逆序环视 (?<=...) 子表达式能够匹配左侧文本
否定逆序环视 (?<!...) 子表达式不能匹配左侧文本
肯定顺序环视 (?=...) 子表达式能够匹配右侧文本
否定顺序环视 (?!...) 子表达式不能匹配右侧文本

参考

测试工具: http://regexr.sinaapp.com/