1. 程式人生 > >正則表達式的正向預查

正則表達式的正向預查

turn 支持 子字符串 前瞻 金額 算法 正則表達 部分 正向

首先,讓我們先做一道算法題: 將一串帶小數的金額,例如: 1010000.5689, 每3位加上‘,‘分隔符。

剛開始我的做法是將.左邊的部分單獨提取出來進行正則替換,這花費了不少的步驟,直到我發現這種做法:

function commafy(str){
return str.replace(/(\d{1,3})(?=(\d{3})+\.)/g, ‘$1,‘)
}
console.log(commafy(‘1010000.5689‘))

其中的?=稱為正向預測,也叫正向前瞻

正向預測(?=pattern),即查找一個字符串,該字符串的後邊接有符合pattern條件的子字符串,但此pattern為非匹配捕獲,即不需要獲取以供以後使用

因此 1(第一個1) 後接有010 000,符合條件

0(第二個0) 後接有000 符合條件

此外還有

負向前瞻 (?!pattern) 匹配後面不是pattern的字符串

正向後瞻 (?<=pattern) 匹配前面是pattern的字符串 (js不支持)

負向後瞻 (?<!pattern) 匹配前面不是pattern的字符串 (js不支持)

正則表達式的正向預查