[英]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.