gpt4 book ai didi

javascript - 如何仅替换正则表达式的 keyup 上当前的错误字符?

转载 作者:行者123 更新时间:2023-12-02 22:31:55 25 4
gpt4 key购买 nike

我希望替换输入文本中不属于护照格式(A9999999)的任何字符。我写了以下内容(jsfiddle here):

HTML

Doc Type <input id='docType' value = 'PASS'/> <br>
Doc ID <input id='docId'/>

JS:

$(document).ready(function () {
var docTypeVal = $("#docType").val();
$('#docId').keyup(function() {
if(docTypeVal == "PASS") {
var $th = $(this);
$th.attr("maxlength","8");

if($th.val().length <= 1) {
$th.val().replace(/[^a-zA-Z]/g, function(str) {
alert('You typed " ' + str + ' ".\n\nPlease use correct format.');
return '';
})
}
else if($th.val().length <= 8 && $th.val().length > 1) {
$th.val().replace(/^(?!.*^([a-zA-Z]){1}([0-9]){7}$)/, function(str) {
alert('You typed " ' + str + ' ".\n\nPlease use correct format.');
return '';
})
}
}
});
});

但是,首先,这不会替换任何字符(错误/正确)。其次,当我输入第二个字符时,它就会发出警报。如果它是字母表,它应该接受第一个字符(否则替换),从第二个到第八个字符它应该只接受数字(否则替换)。

最佳答案

您可以使用 1 个正则表达式对此进行测试。

/^[a-z]?\d{0,7}$/i

此模式将查找 A9A9999999。它将在 AA99 上失败。

示例:https://jsfiddle.net/Twisty/awL0onjg/20/

JavaScript

$(function() {
var docTypeVal = $("#docType").val();
$('#docId').keyup(function(e) {
var exc = [
11, // Tab
127, // Del
];
if (exc.indexOf(e.which) > -1) {
return true;
}
var term = $(this).val();
var re = /^[a-z]?\d{0,7}$/i;

console.log("Testing:", term, re.test(term));
if (re.test(term)) {
$(this).removeClass("invalid");
return true;
} else {
$(this).addClass("invalid");
}
});
});

如果您想防止用户在该模式之外键入内容,请考虑使用.keydown()See More .

关于javascript - 如何仅替换正则表达式的 keyup 上当前的错误字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58872143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com