Javascript match加上jQuery keyup(),双重匹配和奇怪的行为

Javascript match加上jQuery keyup(),双重匹配和奇怪的行为,javascript,jquery,regex,Javascript,Jquery,Regex,在正则表达式中不是很好,但是为什么在找到匹配项时会触发两次console.log $('#name').keyup(function() { var regex = /[\€]/g; var count = (m = $(this).val().match(regex)) ? m.length : 0; // Num matches console.log(count); }); 输出为“hello”: 0 0 0 0 0 在“你好”中添加“€”符号后,我们有: 0

在正则表达式中不是很好,但是为什么在找到匹配项时会触发两次
console.log

$('#name').keyup(function() {
    var regex = /[\€]/g;
    var count = (m = $(this).val().match(regex)) ? m.length : 0; // Num matches
    console.log(count);
});
输出为“hello”:

0
0
0
0
0
在“你好”中添加“€”符号后,我们有:

0
0
0
0
0
1
1
0
0
0
0
0
1
1
1
在“hello€”中添加“h”符号后,我们有:

0
0
0
0
0
1
1
0
0
0
0
0
1
1
1

在“hello”中添加“€”后,不应该只有一个
1

Keyup也会截取控制键。我猜你的键盘上没有专门的欧元键,所以你可以点击
alt-E
这样的键来输入欧元。Alt键导致处理程序触发两次。

您可能希望处理按键事件而不是keyup事件,这将删除ctrl、Alt等的事件触发。对!没有专用的欧元符号键(它是组合Alt Gr+'E')。您是否认为在使用
count
时,双重调用
.keyup()
可能会出现问题?@Gremo您的count变量是keyup处理程序的本地变量,因此它们不会相互干扰-您只会得到多次打印的相同答案。