我使用javascript来检测特定的键击,在编写方法时,我认为我会尝试使用正则表达式和test()方法,并提出:
if (/8|9|37|38|46|47|48|49|50|51|52|53|54|55|56|57|96|97|98|99|100|101|102|103|104|105|110/.test(num)) {
// do something if there's a match
}
Run Code Online (Sandbox Code Playgroud)
这似乎没有100%工作,因为有些值似乎使它超过了正则表达式测试,例如83.我已经继续前进,但我仍然很好奇为什么这不起作用.
这是完全错误的做法.
要回答这个问题,正则表达式匹配你的字符串的一部分.字符串83通过匹配来传递8.
你需要通过放置^(开头和)$结尾来锚定你的正则表达式.
执行此操作的正确方法是创建有效数字数组,并使用比较parseInt.
例如:
var validNumbers = [ 8, 9, 37, 38, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 110 ];
if (validNumbers.indexOf(parseInt(num, 10)) >=0 ) {
//Match
}
Run Code Online (Sandbox Code Playgroud)
你需要indexOfIE 的功能:
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(needle) {
for(var i = 0; i < this.length; i++) {
if(this[i] === needle) {
return i;
}
}
return -1;
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2597 次 |
| 最近记录: |