检测用户输入是否包含JavaScript中的禁止字符
Detecting whether user input contains a forbidden character in JavaScript
我有一个文本框,点击提交按钮后将用JavaScript进行验证。
只允许使用字符0-9、a-f和a-f。
所以g-z和g-z以及其他字符,如标点符号或不允许使用。
到目前为止,我的代码是:
function validate_form ( )
{
valid = true;
if ( document.form.input.value == [a-zA-Z_,.:'|] )
{
alert ( "You can only enter either 0-9 or A-F. Please try again." );
valid = false;
}
return valid;
}
这似乎不起作用。
我是JavaScript新手,谁能告诉我哪里出了问题吗?
我们实际上可以清理很多代码。不需要跟踪valid
,因为test()
将为我们提供我们正在寻找的true
或false
值。在你的情况下,保留一个可接受字符的白名单也比黑名单容易得多。也就是说,我们知道我们想要的每个字符,但不可能指定不想要的每个字符。
function validate_form() {
return /^[a-fA-F0-9]+$/.test(document.form.input.value);
}
请注意,您也可以使用此功能进行预检查:
document.form.input.onkeyup = function() {
if (!validate_form()) {
alert("You can only enter either 0-9 or A-F. Please try again.");
}
};
语法为/^[a-zA-Z_,.:'|]+$/.test(document.form.input.value)
。注意^
和$
:如果没有它们,即使对于至少只有一个允许字符的字符串,测试也会通过。
验证的最佳方法是不要让用户输入错误的字符。使用以下代码(这是jQuery版本,但您也可以轻松地将其转换为JavaScript(:
$('#inputFiledId').keyup(function(e){
// checking the e.keyCode here, if it's not acceptable, the return false (which prevents the character from being entered into the input box), otherwise do nothing here.
});
这叫做预检查。请考虑,无论你在客户端做什么,你都应该始终在服务器上检查值(进行服务器端验证(,因为有多种黑客行为,比如表单欺骗。
您可以执行类似的操作
$('input').keyup(function(){
var charac = /[g-zG-Z;:,.|_]/;
var result = charac.test($(this).val());
if(result == true){
alert('You can only enter either 0-9 or A-F. Please try again.');
}
})
http://jsfiddle.net/jasongennaro/GTQPv/1/
相关文章:
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用RegExp查找url中的字符
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 允许在文本框中使用某些字符
- 如何禁止在纯JavaScript形式输入的表单中输入特定字符
- 挖空 JS 网格,禁止绑定语句中的字符
- 输入表单中的禁止字符
- 禁止页面上所有文本区域的字符
- 禁止在按键时插入特殊字符,但允许现有字符
- 在输入了一定数量的字符后,禁止用户在文本区域字段中输入文本
- RegEx禁止字符,除非转义
- 如何禁止在文本框中粘贴特殊字符
- jQuery方法,该方法禁止输入某些字符
- 检测用户输入是否包含JavaScript中的禁止字符
- 如何使用Angular.js禁止只允许字符进入输入字段
- 如何在文本框中使用javascript删除或禁止特定的字符或符号