如何在javascript正则表达式中允许正斜杠?

时间:2015-05-18 07:29:19

标签: javascript jquery regex

在这里,我已阻止在我的移动浏览器中为所有输入类型键入特殊字符。 但它将允许所有字母和数字。

我的要求是允许用户只为特定字段键入 / (正斜杠)(例如:日期字段)。

有可能以简单的方式吗?

除了为我需要的特定字段/(正斜杠)之外的所有输入类型分配类名?

   $(document).on('keypress','input', function(event){  
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }
}); 

注意:我需要允许对特定类进行正斜杠而不是执行所有输入字段。

简单:我需要为期望特定类的所有输入字段阻止特殊字符(让我们说)

我没有要求具有相同正则表达式功能的解决方案。我需要单独的点击事件,只允许特定类的斜杠' someclassname'

3 个答案:

答案 0 :(得分:2)

您可以将/添加到正则表达式中,如下代码所示:

td

答案 1 :(得分:1)

您可以使用函数is检查焦点输入是否具有日期输入类或其类型是日期。然后,您可以将另一个regexp与之前的表达式合并。代码:

$(document).on('keypress','input', function(event){
    var regex = new RegExp("^[a-zA-Z0-9]+$");
    if($("input:focused").is(".classname"))
    {
        regex = new RegExp(regex.source + "|\/");
    }
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
       event.preventDefault();
       return false;
    }
});

P.S。我不是100%肯定2个正则表达式的组合代码,只是由内存写的。如果不起作用,您可以简单地添加另一个检查,如果字符串等于/

答案 2 :(得分:1)

要在两个正则表达式之间切换,我会使用它:

var regex = $(this).data('date') ? /^[a-zA-Z0-9\/]+$/ : /^[a-zA-Z0-9]+$/;

data-date添加到日期输入中,例如:

<input data-date placeholder="I allow slashes" />
<input placeholder="No slashes here" />