javascript验证,除“ - ”和“_”外不允许使用特殊字符

时间:2014-01-26 11:04:49

标签: javascript regex validation

首先,我不是javascript的专家,所以请耐心等待。

我需要创建一个验证,其中不允许用户输入除“ - ”和“_”之外的任何特殊字符(例如:'。','/'和'@'不允许)。

我试过谷歌,我知道我可以使用javascript的REGEX轻松实现这一点。但是,我不允许使用REGEX,所以我需要在不使用REGEX的情况下对其进行编码。

我不想手动验证每个特殊字符,所以请帮帮我。

感谢您的时间。

3 个答案:

答案 0 :(得分:3)

所以在这个作业中,你是:

  1. 不允许使用正则表达式,

  2. 不允许“手动”(无论这意味着)验证每个“特殊字符”(无论这意味着什么)

  3. 我认为限制#2意味着您无法将每个字符与特定列表进行比较,例如,在switch语句中。

    第三种方法是将字符代码与有效的范围进行比较。您可以通过charCodeAt(n)获取字符的字符代码(其中n是字符串中的索引),并使用><(或{{1)比较范围}和>=,或组合)。例如,<=会测试(x >= 10 && x <= 20)是否在x(包括)范围内。

    您还可以将字符(而不是字符代码)与范围进行比较,前提是您要非常小心地了解正在发生的事情。因此,例如,如果10-20包含单字符字符串c,则表达式"j"将为true。但是如果(c >= "a" && c <= "z")包含c,则该表达式将为false,因为大小写很重要。

    有了这个起点,假设你已经被赋予某种“特殊”字符的某种定义,你应该能够编写代码。

答案 1 :(得分:1)

如果您有一组不允许的特定字符,您可以使用JS函数str.indexOf(<invalid character>);测试它们的存在。如果找不到该字符,它应该返回-1

答案 2 :(得分:1)

使用唯一的ID创建HTML INPUT元素并获取对它的引用。

getElementById

您需要检查何时按下某个键。

onkeypress

通过向INPUT元素添加事件侦听器

addEventListender

如果是不允许的字符,则阻止它显示。

preventDefault

否则允许它。

所以,你的代码将是这样的。

HTML

<input id="myInput" type="text"></input>

的Javascript

// get a reference to my input element
var myInput = document.getElementById('myInput');

// add an event to that element that fires on keypress
myInput.addEventListener('keypress', function (e) {
    // get the character from that keypress, make it lower case to reduce the number of checks required.
    var char = String.fromCharCode(e.keyCode || e.charCode).toLowerCase();

    if(/* not one of these characters */) {
        // prevent the character from being displayed
        e.preventDefault();
    }
}, false);

尝试为自己做一些调查,并发布您尝试过的问题,以及您遇到的问题,但无法解决。所以不是要为你做这项工作,而是在你遇到问题时提供帮助,但是你已经尝试过并且无法正常工作。请务必完全指定代码的期望以及它未执行的操作。如果可能,请提供一个jsFiddle来说明您遇到的问题。