網(wǎng)站首頁 編程語言 正文
前言:
刷題過程中遇到要求把 數(shù)字按照千分位分隔,然后返回字符串,其實在前端開發(fā)中經(jīng)常會遇到這樣的一種需求,使用Javascript格式化數(shù)字進行輸出,本文使用 ES6 的新增方法 replaceAll()來實現(xiàn)這個需求 ,題目描述如下
?replaceAll()方法
replaceAll()方法 是 replace()方法的改進版 ,字符串的實例方法?
replace()
只能替換第一個匹配 ,如果要替換所有的匹配,不得不使用正則表達式的 /g
修飾符進行全局匹配。但是replaceAll()
方法,可以一次性替換所有匹配。(如下)
'aabbcc'.replace('b', '_')
// 'aa_bcc'
'aabbcc'.replace(/b/g, '_')
// 'aa__cc'
'aabbcc'.replaceAll('b', '_')
// 'aa__cc'
?replaceAll()方法第二個參數(shù)
replaceAll()
的第二個參數(shù)是一個字符串,表示替換的文本,其中可以使用一些特殊字符串。
$&
:匹配的字符串。$`?
:匹配結果前面的文本。$'
:匹配結果后面的文本。$n
:匹配成功的第n
組內(nèi)容,n
是從1開始的自然數(shù)。這個參數(shù)生效的前提是,第一個參數(shù)必須是正則表達式。$$
:指代美元符號$
。
// $& 表示匹配的字符串,即`b`本身
// 所以返回結果與原字符串一致
'abbc'.replaceAll('b', '$&')
// 'abbc'
// $` 表示匹配結果之前的字符串
// 對于第一個`b`,$` 指代`a`
// 對于第二個`b`,$` 指代`ab`
'abbc'.replaceAll('b', '$`')
// 'aaabc'
// $' 表示匹配結果之后的字符串
// 對于第一個`b`,$' 指代`bc`
// 對于第二個`b`,$' 指代`c`
'abbc'.replaceAll('b', `$'`)
// 'abccc'
// $1 表示正則表達式的第一個組匹配,指代`ab`
// $2 表示正則表達式的第二個組匹配,指代`bc`
'abbc'.replaceAll(/(ab)(bc)/g, '$2$1')
// 'bcab'
// $$ 指代 $
'abc'.replaceAll('b', '$$')
// 'a$c'
?正則表達式(先行斷言)
說這種方法前,我們來了解下什么是先行斷言吧!看例子。(參考 原文鏈接)
有以下字符串:?我愛你 我愛 愛 愛你
如果要取出愛字,要求這個愛字后面有你,這個時候就要這么寫,這就是?先行斷言:
'我愛你 我愛 愛 愛你'.match(/愛(?=你)/g) // ["愛", "愛"]
如果要求愛字后面沒有你,那自然也有先行否定斷言:
'我愛你 我愛 愛 愛你'.match(/愛(?!你)/g) // ["愛", "愛"] ,因為匹配相同...
這個時候,如果要求愛字后面有你,前面還要有我,那就要用到后行斷言了,如下:
'我愛你 我愛 愛 愛你'.match(/(?<=我)愛(?=你)/g) // ["愛"]
最后,如果要求愛字前面沒有我,后面也沒有我,那就要用到先行否定斷言和**后行否定斷言,**如下:
'我愛你 我愛 愛 愛你'.match(/(?<!我)愛(?!你)/g) // ["愛"]
?簡單千分位分隔
使用?
replaceAll()方法
的第二個參數(shù),代碼簡簡單單就一行完成千分位分隔
function _comma(number) {
return ((number+'').replaceAll(/\d{1,3}(?=(\d{3})+$)/g,'$&,'))
}
?\d{1,3}? ?表示匹配 1至3 個數(shù)字字符
?=(\d{3})+$? ?表示后面匹配三個數(shù)字字符? $ 表示從行尾匹配
$&? 是?
replaceAll()方法
的第二個參數(shù),表示與匹配結果一致 ,$&, 表示匹配結果基礎上加上 逗號 ,
?小改進(支持小數(shù))
通過添加 三目運算符判 斷字符串是否存在小數(shù)位, 其他邏輯代碼不變
// 加入三目運算符判斷小數(shù)
function _comma(number) {
return !(number + '').includes('.')
? ((number+'').replaceAll(/\d{1,3}(?=(\d{3})+$)/g,'$&,'))+''
: ((number+'').replaceAll(/\d{1,3}(?=(\d{3})+(\.))/g,'$&,'))+''
}
?console.log(_comma(1234567.36))? ? ? // 1,234,567.36
文章如有錯誤,懇請大家提出問題,本人不勝感激 。 不懂的地方可以評論,我都會一一回復
文章對大家有幫助的話,希望大家能動手點贊鼓勵,大家未來一起努力 ? ? 長路漫漫,道阻且長 ?
原文鏈接:https://blog.csdn.net/qq_52855464/article/details/125582099
- 上一篇:正則表達式:判斷是否符合USD格式
- 下一篇:ES6:字符串的擴展及新增方法
相關推薦
- 2022-11-24 nginx平滑升級及nginx配置文件詳解_nginx
- 2023-04-26 詳解Flutter桌面應用如何進行多分辨率適配_Android
- 2022-11-02 React循環(huán)遍歷渲染數(shù)組和對象元素方式_React
- 2022-08-06 .Net?Core中使用EFCore生成反向工程_實用技巧
- 2022-09-29 shell函數(shù)內(nèi)調(diào)用另一個函數(shù)(不帶返回值和帶返回值)_linux shell
- 2022-03-27 C++命名空間和缺省參數(shù)介紹_C 語言
- 2023-11-23 記錄apscheduler任務模塊添加任務后立即執(zhí)行
- 2022-08-25 基于Python編寫一個點名器的示例代碼_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支