在用户名中阻止除下划线(_)和句点(。)之外的特殊字符

时间:2016-07-14 05:29:46

标签: javascript character

我希望用户的用户名由字母,数字,句号和下划线组成。但我在下面的内容是它会阻止所有角色甚至是句号和下划线。如何使用下面的代码启用字母,数字,句点和下划线?请帮忙。谢谢。

function blockSpecialChar(e) {
        var k = e.keyCode;
        return ((k > 64 && k < 91) || (k > 96 && k < 123) || k == 8   || (k >= 48 && k <= 57));
     }

6 个答案:

答案 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 ); 
  });

SampleCode