Firefox上的正则表达式问题

时间:2018-01-18 15:30:40

标签: javascript jquery regex firefox web

我试图使用正则表达式只允许字母,' - '和输入字段的退格键。我需要能够使用左右箭头键和删除键。我试图这样做:

$("#input").keypress(function (e) {
   var regex = new RegExp("^[a-zA-Z-\b]+$");
   var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
   if((!(e.keyCode == 37 || e.keyCode == 39 || e.keyCode == 46))){
      if(!regex.test(key)){
        return false;       
      }        
   }    
});

我将检查该键是否不是左箭头(37),右箭头(39)或删除键(46),然后检查该键是否不在正则表达式中。

这适用于IE和Chrome,但在Firefox上,密钥代码37和39也对应于'和%分别。

密钥代码适用于所有浏览器,问题是[仅限firefox]如果我允许使用箭头和删除密钥,它也允许使用'和%字符。

1 个答案:

答案 0 :(得分:0)

我实际上能够弄明白。对于IE和Chrome,keyCode和哪些值是相同的。在Firefox上,左箭头的keyCode值为37,但该值为0。

我能够解决这个问题:

$("#input").keypress(function (e) {
   var regex = new RegExp("^[a-zA-Z-\b]+$");
   var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);             
   if(!((e.keyCode == 37 && e.which == 0) || (e.keyCode == 39 && e.which == 0) || (e.keyCode == 46 && e.which == 0))){
      if(!regex.test(key)){
         return false;      
      }        
   }
});