我希望用户的用户名由字母,数字,句号和下划线组成。但我在下面的内容是它会阻止所有角色甚至是句号和下划线。如何使用下面的代码启用字母,数字,句点和下划线?请帮忙。谢谢。
function blockSpecialChar(e) {
var k = e.keyCode;
return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8 || (k >= 48 && k <= 57));
}
答案 0 :(得分:1)
以下是基于正则表达式的函数的简单替换:
function blockSpecialChar(e) {
return /[^A-Za-z0-9._]/.test(e);
}
看到它正常工作:https://jsfiddle.net/utt3sf6p/
如果要使用键码而不是正则表达式,则必须使用正确的键码函数getCharAt()
并稍微更改布尔表达式:
function blockSpecialChar(e) {
var k = e.charCodeAt(0);
return ((k > 64 && k < 91) || (k > 96 && k < 123) || (k >= 48 && k <= 57) || (k == 46) || (k == 95));
}
看到它正常工作:https://jsfiddle.net/wfn37pu6/
注意:示例假设e
包含单个字符。如果e
是键盘事件(例如onkeypress
),则必须将.test(e)
替换为.test(e.key)
,将e.charCodeAt(0)
替换为e.key.charCodeAt(0)
。
答案 1 :(得分:0)
/^[ A-Za-z0-9_@./#&+-]*$/
链接您也可以使用字符类\ w替换A-Za-z0-9_ enter link description here
答案 2 :(得分:0)
您必须使用Regular Expression来执行此操作。
var username = "something123._";
var patt = /([a-z][0-9][\.\_])*/i; /* this is the pattern u want to test */
var result = patt.test(username); /* result = true or false */
if(result == true){
alert("your username is nice");
}else{
alert("your username isn't good");
}
我不确定我的模式u can test your patterns Here
修改强>
使用键码:
$("input").bind("keypress",function(e){
var patt = /([a-z][0-9][\.\_])*/i; /* this is the pattern u want to test */
var value = this.value + String.fromCharCode(e.keyCode);
var result = patt.test(value ); /* result = true or false */
/* here you can do anything now */
});
答案 3 :(得分:0)
试一试:
<html>
<head></head>
<body>
<input type="text" id="txt">
<button onclick="fun()">Test</button>
<script>
var patt = /^[a-zA-Z0-9\.\_]*$/;
var ele = document.getElementById("txt");
function fun() {
var value = ele.value;
if(patt.test(value))
alert("Valid");
else
alert("Invalid");
}
</script>
</body>
</html>
答案 4 :(得分:0)
这是简单的版本
$('.YourClass').keypress(function(e){
var chr = String.fromCharCode(e.which);
if ("1234567890qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM._".indexOf(chr) < 0)
return false;
})
答案 5 :(得分:0)
您可以通过正则表达式和按键事件来达到要求
$("input").keypress(function(e){
var patt = /^[\w\._]*$/;
var value = this.value + String.fromCharCode(e.keyCode);
$("span").text(patt.test(String.fromCharCode(e.keyCode) ));
return patt.test(value );
});