簡體   English   中英

如何每2個字符插入一個字符?

[英]How can I insert a character after every 2 characters?

我想在每兩個字符之后插入一個斜杠,但僅在前兩個實例中插入。 每次出現后都會插入以下正則表達式。 有誰知道如何將其限制為兩次? 金額將由用戶通過輸入元素輸入。 因此,如果用戶輸入30032017 ,它將類似於以下內容。

function insertSlash(val) {
    return val.match(new RegExp('.{1,2}', 'g')).join("/");
}

insertSlash(input);

因此對於第一個字符,用戶將輸入3 在下一個輸入中它將為0 然后應該插入一個斜線。

然后應返回30/03/2017

有兩種方法可以執行此操作,可以使用僅針對這種類型的字符串格式化的正則表達式

 function insertSlash(val) { return val.replace(/^(\\d{2})(\\d{2})/, '$1/$2/'); } console.log(insertSlash('30032017')); 

或者,您可以使用簡單的替換功能來跟蹤替換計數

 function insertSlash(val) { var count = 2; var i = 0; return val.replace(/(\\d{2})/g, function(match, capture) { return (i++ < count) ? capture + '/' : capture; }); } console.log(insertSlash('30032017')); 

編輯

看來您已經編輯了問題,以包括在用戶鍵入時需要進行此操作的問題。 為此,有一些遮罩插件考慮了插入符的位置,占位符信息,可能值得您花一些時間檢查一下。 我發現這是一個具有React JS組件的組件。 我不能保證,我從未使用過它,但這是一個值得研究的想法。

忽略它可能不匹配,

"30032017".match(new RegExp("(..)(..)(....)")).slice(1).join("/")

match返回的值是匹配組數組。 第一個元素將具有整個匹配的字符串,因此需要將其切出以便我們可以加入。

如果在知道特定字符位置時對字符串進行切片會更容易:

return val.slice(0, 2) + "/" + val.slice(2, 4) + "/" + val.slice(4)
function insertSlash(val) {
    return val.substr(0,2)+"/"+val.substr(2,2)+"/"+val.substr(4,4)
}

insertSlash('30032017');

如果要將日期字符串視為實際日期,可以執行以下操作:

 const dateString = "30032017" const date = new Date(dateString.slice(4), dateString.slice(3,4), dateString.slice(0,2)) const formattedDateString = date.getUTCFullYear() +"/"+ date.getUTCMonth() +"/"+ date.getUTCDate() console.log(formattedDateString) 

如果需要,這將允許您執行任何中間日期操作(相加/相減天/月/年)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM