除了第一个以外全部替

时间:2016-11-23 05:18:51

标签: javascript regex

是否可以替换除第一个以外的所有事件? 因此123.45.67..89.0应该成为123.4567890

编辑:我正在寻找正则表达式。 我知道如何使用concat或使用索引来完成它。

8 个答案:

答案 0 :(得分:4)

使用JS:

var str = "123.45.67.89.0";

var firstOccuranceIndex = str.search(/\./) + 1; // Index of first occurance of (.)

var resultStr = str.substr(0, firstOccuranceIndex) + str.slice(firstOccuranceIndex).replace(/\./g, ''); // Splitting into two string and replacing all the dots (.'s) in the second string

console.log(resultStr);

希望这会有所帮助:)

答案 1 :(得分:2)

您可以使用积极的眼光实现这一目标:

(?<=\..*)\.

所以您的代码应该是

"123.45.67..89.0".replace(/(?<=\..*)\./g, '');

答案 2 :(得分:1)

这会是作弊:

"123.45.67.89.0".replace(/\..*/, c => "." + c.replace(/\./g, () => ""))

答案 3 :(得分:0)

试试这个

var a = '123.45.67.89.0';

a.split('.')[0].concat('.'+a.split('.')[1]+a.split('.')[2]+a.split('.')[3]+a.split('.')[4])

答案 4 :(得分:0)

也许splice()更适合这个。

var str = "123.45.67.89.0";
var arr = str.split(".");
var ans = arr.splice(0,2).join('.') + arr.join('');

alert(ans);
// 123.4567890

答案 5 :(得分:0)

我们可以将一个函数传递给replace方法,并匹配除第一个事件以外的所有事件。像这样-

givenString.replace(/{pattern_here}/g, (item) => (!index++ ? item : ""));

const givenString = '123.45.67..89.0'
let index = 0

let result = givenString.replace(/\./g, (item) => (!index++ ? item : ""));

console.log(result)

答案 6 :(得分:0)

您可以首先使用 indexOf 找到 . 的第一次出现,然后使用 replace 返回返回的内容并替换为匹配的字符串。

const str = "123.45.67..89.0";
const firstOccurence = str.indexOf(".");
const result = str.replace(/\./g, (...args) => {
  if (args[1] === firstOccurence) return args[0];
  else return "";
});

console.log(result);

答案 7 :(得分:-1)

&#13;
&#13;
var str="123.45.67.89.0";
var arr=str.split(".");
var ans=[];
ans=arr.map(function(a,index){
return a + (index?"":".");
})
console.log(ans.join().replace (/,/g, ""));
&#13;
&#13;
&#13;