首页 新闻 会员 周边 捐助

js正则替换第二个小数点

1
悬赏园豆:5 [已解决问题] 解决于 2018-01-08 09:23

如:0.123.    ->  0.123

0.1.2 ->  0.12

1..2 -> 1.2

1.2...5  -> 1.25

kingreatwill的主页 kingreatwill | 菜鸟二级 | 园豆:383
提问于:2018-01-04 20:52
< >
分享
最佳答案
0

哈哈, 想到了,这个正则表达式你值得拥有:
Pattern: (\d)(\.)(\d*)(\2*)(\d*)
思想是找出第一个 . 后面的所有 .
然后如果你是用C#的话,直接用Replace方法换成Replace(text, "$1$2$3$5"); 就很beautiful 了。JS的话,用Replace方法类似,具体如何使用,你应该知道吧。不知道的话,回复再给你个Demo
下面是我测试的截图:

收获园豆:5
BUTTERAPPLE | 老鸟四级 |园豆:3190 | 2018-01-04 23:31

"12..3.5646".replace(new RegExp(/(\d)(\.)(\d*)(\2*)(\d*)/g), '$1$2$3$5')

12.3.5646

kingreatwill | 园豆:383 (菜鸟二级) | 2018-01-05 13:58

"12.3.56.46".replace(new RegExp(/(\d)(\.)(\d*)(\2*)(\d*)/g), '$1$2$3$5')

kingreatwill | 园豆:383 (菜鸟二级) | 2018-01-05 13:59

"12.3.56..46".replace(new RegExp(/(\d)(\.)(\d*)(\2*)(\d*)/g), '$1$2$3$5')

kingreatwill | 园豆:383 (菜鸟二级) | 2018-01-05 14:00

@kingreatwill: 我晚上回去再改进一下。

BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-01-05 15:11

@kingreatwill: 目前只想到了这个:
正则表示式改为 (\d+)(\.)(\d*)(\2*)(\d*),然后每个字符串遍历这个替换直至表达式中只有一个 . ,但这个对于大量数据明显不适用。小部分还可以用用。

BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-01-05 21:00

@BUTTERAPPLE: "12.3.56.46".replace(new RegExp(/(\d+)(\.)(\d*)(\2*)(\d*)/g), '$1$2$3$5')

->"12.356.46"

好像也没有用

kingreatwill | 园豆:383 (菜鸟二级) | 2018-01-05 22:00

@kingreatwill: 让结果再遍历一遍 replace

BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-01-06 11:46
其他回答(3)
0

 1     var str = ['0.123.', '0.1.2', '1..2', '1.2...5'];
 2     for (var i = 0, n = str.length; i < n; i++) {
 3         var flag = true;        //第一个不替换
 4         var value = str[i].replace(/\./ig, function (a, b, c) {
 5             if (!flag) {        //不是第一个则返回空
 6                 return "";
 7             } else {
 8                 flag = false;   //在第一次设置标识并返回.
 9                 return ".";
10             }
11         });
12         console.log(str[i] + ":" + value);
13     }

或者这样:

1     var str = ['0.123.', '0.1.2', '1..2', '1.2...5'];
2     for (var i = 0, n = str.length; i < n; i++) {
3         var value = str[i].replace(/\./ig, function (a, b, c) {
4             return c.indexOf(a) == b ? '.' : '';
5         });
6         console.log(str[i] + ":" + value);
7     }
网事 | 园豆:238 (菜鸟二级) | 2018-01-05 16:18
0

'0.1.2'.replace(/(\.[^.]*)./,'$1')

陆小森 | 园豆:202 (菜鸟二级) | 2018-01-08 18:29

有问题: '0.1'.replace(/(.[^.]*)./,'$1') 会输出0.

支持(0) 反对(0) 风驰万里 | 园豆:202 (菜鸟二级) | 2020-12-11 10:31
0

'0.1'.replace(/(.[^.]*)./,'$1')

风驰万里 | 园豆:202 (菜鸟二级) | 2020-12-11 10:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册