Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript验证,除“-”和“-”外,不允许使用特殊字符_Javascript_Regex_Validation - Fatal编程技术网

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

javascript验证,除“-”和“-”外,不允许使用特殊字符,javascript,regex,validation,Javascript,Regex,Validation,首先,我不是javascript方面的专家,所以请容忍我 我需要创建一个验证,其中不允许用户输入任何特殊字符,但不允许输入'-'和''.'例如:'.','/'和'@' 我曾经尝试过谷歌,我知道我可以用javascript的正则表达式轻松实现这一点。但是,我不允许使用正则表达式,所以我需要在不使用正则表达式的情况下对其进行编码 我不想手动验证每个特殊字符,所以请帮助我 谢谢你抽出时间 在本作业中,您: 不允许使用正则表达式,以及 不允许手动验证每个特殊字符 我假设限制2意味着您不能将每个字符与特定

首先,我不是javascript方面的专家,所以请容忍我

我需要创建一个验证,其中不允许用户输入任何特殊字符,但不允许输入'-'和''.'例如:'.','/'和'@'

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

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


谢谢你抽出时间

在本作业中,您:

不允许使用正则表达式,以及

不允许手动验证每个特殊字符

我假设限制2意味着您不能将每个字符与特定列表进行比较,例如,在switch语句中


第三种方法是将字符代码与有效范围进行比较。您可以通过charCodeAtn获取字符的字符代码,其中n是字符串中的索引,您可以使用>和=和=10&&x=a&&c比较范围。如果您有一组特定的字符是不允许的,您可以使用JS函数str.indexOf;测试它们是否存在;。如果找不到字符,它应该返回-1。

创建一个具有唯一ID的HTML元素,并获取对该元素的引用

您需要检查按键的时间

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

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

否则就允许它

所以,你的代码应该是这样的

HTML


试着为自己多做一点调查,把你所做的和你遇到的、无法解决的问题一起发布出来。所以,我们不是来为你做这项工作的,而是来帮助你解决一些你尝试过但没有成功的问题。确保完全指定代码的期望值以及它没有做什么。如果可能,请提供一个说明您所面临问题的示例。

1您已经给出了一些特殊字符的示例,但没有给出严格的定义。Unicode有成千上万个字符。2不允许使用正则表达式听起来像是一个愚蠢的限制。正则表达式是否有某些特殊属性使得它不适合在这里使用?不允许使用正则表达式?为什么不呢?这是显而易见的/最简单的解决办法,你不是想让我们做你的家庭作业,是吗?@Jon宁愿做家庭作业,而不是白痴。或者是老板认为正则表达式总是很慢。@Jon谈到你的第1点-我已经投票决定结束。@BlazeTama:提问很好,但我们希望你自己的努力会出现在问题中,特别是如果是家庭作业的话。大多数人都觉得不值得给你一个答案,因为从长远来看,没有人会从中获益,即使是你。我的抱怨是,这个问题没有得到很好的说明,这仍然存在——还有一些东西,比如我需要手动验证,但我不想手动验证。我们看不懂你的心思。谢谢你的帮助。我编辑了我的问题,因为它以前不太清楚。你的意思是我需要使用ASCII码吗?@BlazeTama:JavaScript中的字符码不是ASCII码,只有前127个除外。但是,是的,字符代码或根据我的编辑,如果你小心的话,你可以比较实际的字符串。所以我仍然需要手动验证它,一个接一个,通过使用charCodeAt?如果可能的话,我正试图找到另一个答案。如果没有人能给我更好的解决办法,我会接受你的回答。可惜我只能投一次票。Thanks@BlazeTama:如果你不能使用正则表达式,那么是的,你必须自己检查每个字符。我感谢你的逐步指导,但我不要求,我也不需要它们,这意味着我理解这不是为了做我的工作,所以我只是问一个特殊的问题,而不是要求一步一步的教程。恐怕我们这里有点通信小姐。谢谢你的帮助,可惜我只能投一次票,我会试试你的解决方案。谢谢,我会试试你的解决方案
<input id="myInput" type="text"></input>
// 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);