regex - 正则表达式匹配,只要它出现在可选字符之前
问题描述
我目前有正则表达式/\B(?=(\d{3})+(?!\d))/g
,但我只希望它在.
iff.
存在之前匹配。
换句话说12345
可以匹配。但是12345.6789
之后不能有比赛.
一个简单的解决方法是让if
else
块分解案例,但我希望它在一个正则表达式中
更多详情
我正在使用 javascript 并制作一个正则表达式来帮助我格式化数字。具体来说,这个正则表达式会将逗号插入数字中。
目前,此代码的工作方式如下:
function formatter(myNum) {
return myNum.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}
输入 1:12345.6789
输出 1:12,345.6,789
所需输出 1:12,345.6789
输入 2:12345
所需输出 2:12,345.6789
希望这可以消除任何混乱。
- 我希望它在没有时匹配
.
- 如果它确实有
.
它应该能够匹配之前 - 我可以做一个简单的解决方法,但似乎正则表达式应该很容易处理这个问题?
解决方案
如果您可以对量词(现代 JS 引擎)使用负后视:
function formatter(myNum) {
return myNum.replace(/(?<!\.\d+)\B(?=(\d{3})+(?!\d))/g, ',');
}
console.log(formatter('1234512345'));
console.log(formatter('1234512345.1234512345'));
查看兼容性:
推荐阅读
- css - 附加到错误元素的 CSS 样式
- php - 重定向 /nameoftheorganization 到 /home/nameoftheorganization 调用 Home.php 控制器
- angular-in-memory-web-api - “Angular-in-memory-web-api”中的 genId() 方法
- model - 同步电机状态空间方程的局部化
- php - 超过渐变时,Tcpdf multiCell 边框丢失
- javascript - Ionic 4+ 推送通知自定义参数
- python - bin 中出现的总和
- machine-learning - numpy elementwise 相乘向量和矩阵具有相同的行数
- kubernetes - Ratelimit 部署中每秒创建的 Pod 数量
- docker - Linux 和 Windows 上的 Docker-Compose 有区别吗?