gpt4 book ai didi

javascript - 正则表达式仅将按键作为事件

转载 作者:行者123 更新时间:2023-11-30 10:45:07 24 4
gpt4 key购买 nike

我想知道这里的问题是什么。

$("#city_field").bind({
keypress: function(event){
var regex = /^[a-zA-ZäöüÄÖÜ]/;
if (regex.test($("#city_field").val())==true) {
$('.r_validation').html('').css('background-color', '');
} else {
$('.validation').html("TEST").css('background-color', 'red');
}
}
});

每当我输入字母时它都是有效的,然后当我输入数字时会出现红色验证通知。此时一切都很好,直到我在字母后输入数字。以下内容应该是无效的,但在我当前的脚本中它被视为有效:

  • foo1212
  • foo,
  • foo, [逗号后有空格]

我真正想要验证的是只接受字母和短划线 (-),仅此而已。

谢谢。

编辑

郑重声明,@Adam Rackis 的最后评论解决了这个问题,我最终得到了这段工作代码。

$(function(){
$("#city_field").bind("keyup",
function(event) {
var regex = /^[a-zA-ZäöüÄÖÜ]+$/;
if (regex.test($("#city_field").val())==true) {
$('.validation').html('').css('background-color', '');
} else {
$('.validation').html("TEST").css('background-color', 'red');
}
});
});

最佳答案

您的正则表达式仅匹配一个字符。您需要将该输入放在 Kleene 闭包上,然后放置字符串结束标记:

/^[a-zA-ZäöüÄÖÜ]*$/;

或者如果你想确保至少有一个字符,你可以使用正闭包:

/^[a-zA-ZäöüÄÖÜ]+$/;

产生:

var r = /^[a-zA-ZäöüÄÖÜ]+$/;

console.log(r.test('Foo')); //true
console.log(r.test('Foo123')); //false
console.log(r.test('foo,')); //false
console.log(r.test('foo, ')); //false
console.log(r.test('foo ')); //false

DEMO

另外,确保您捕获了keyup 事件,因为keypress 在您的文本框中 触发文本更新,所以你总是在验证后面的一个字符。


所以在你的正则表达式上:

/^[a-zA-ZäöüÄÖÜ]/;

当测试 Foo123 时,F 将被消耗,仅此而已。完毕。

关于javascript - 正则表达式仅将按键作为事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8846404/

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