測(cè)試工具下載
RegexBuddy
1.如何將浮點(diǎn)數(shù)點(diǎn)左邊的數(shù)每三位添加一個(gè)逗號(hào)饱狂,如12000000.11轉(zhuǎn)化為『12,000,000.11』?
//理解零寬斷言
function enNumber(num){
num.toString().replace(/(\d)(?=(\d{3})+\.)/g,"$1,")
}
///(d)(?=(d{3})+\.)/g: 全局(即多次)匹配一個(gè)數(shù)字, 這個(gè)數(shù)字后面接著N(N>=1)個(gè)三位數(shù)(三位數(shù)被當(dāng)做一個(gè)整體體看待)后字符串.結(jié)束前
2.將一串?dāng)?shù)字的每3個(gè)就用逗號(hào)分開的問題
function cutNumber(num){
return num.toString().replace(/(\d)(?=(\d{3})+\.)/g,"$1,")
}
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
3.通過test() 后調(diào)用RegExp.$..獲取分組
if(/(y+)/.test('huangyyychu')){
console.log(RegExp.$1) //yyy
}
4.獲取一段代碼中的圖片地址
知識(shí)點(diǎn)概括
- 巧妙運(yùn)用字符類取反 [^]
- 使用非貪婪模式和邊界運(yùn)用 *? \b
- 利用(?:)忽略分組
// 分解知識(shí)點(diǎn)
1. 獲取2個(gè)尖括號(hào)里面指定位置的前面所有字符串
<hh jljlj hcc g> // 獲取<hh 和hcc之間的任意字符
第一步: <hh[^>]*?竟可能少的匹配 厅各,所以只會(huì)匹配<hh
第二步: <hh[^>]*?\bhcc 就會(huì)匹配 <hh jljlj hcc
第三部:<hh([^>]*?)\bhcc 設(shè)置分組獲取對(duì)應(yīng)的字符
2. 獲取<img class='xxx' src = "http://lianj-public-test.img-cn-shenzhen.aliyuncs.com//resource/web-0-1499307279918-7b3ce6c10ce17088.jpg" style="display: block">中的圖片地址
<img(?:[^>]*?)\bsrc\s*=\s*(["'])([^"']*)\1
解析: 1. 我們不需要` class='xxx' `這個(gè)字符串的分組 2. 需要單引號(hào)或者雙引號(hào)的分組來匹配最后的\1
3. \1表示匹配分組中最近的長度為1的分組
正則.png