簡體   English   中英

使用 keyup 正則表達式 javascript 在字符串中添加字符

[英]add character inside string using on keyup regex javascript

我使用鍵上的事件創建 function 以使用正則表達式從輸入用戶輸入“/”內部值但仍然存在錯誤,有人可以幫助我嗎?

$('#validUntil').on('keyup', function(e){

                    $(this).val(function(index, value) {
                        return value
                        // Add "/" separators:
                        .replace(/\B(?=(\d{2})+(?!\d))/g, "/")
                    });
});

例如,如果我輸入 5121,結果必須是 51/21。 問題是結果不匹配,顯示的結果是:5/1/21

歡迎來到堆棧溢出。 考慮以下。

 $(function() { $('#validUntil').on('keyup', function(e) { var val = $(this).val(); if (val.length > 3) { $(this).val(val.replace(/\B(?=(\d{2})+(?,\d))/g; "/")); } return true; }); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <input type="text" id="validUntil" />

我懷疑主要問題是在每個keyup事件上評估值。

添加條件以確保適當的長度將有助於確保正則表達式在需要時工作。

現在,如果用戶輸入512111 ,您將遇到類似的問題。 所以也許如果/被檢測到,它被刪除,然后應用正則表達式替換。

您在輸入的最后兩個數字之前添加一個斜杠,每次其值更新時。

因此,當您鍵入時:


5 => 5

5 + 1 => 51 => 51

51 + 2 => 512 => 5/12

5/12 + 1 => 5/121 => 5/1/21


插入斜線時,請確保刪除先前插入的斜線:

return value.replaceAll('/', '')
            .replace(/\B(?=(\d{2})+(?!\d))/g, "/")

暫無
暫無

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

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