验证文本输入中的名称

时间:2013-05-16 05:55:30

标签: javascript jquery

我有一个名字的文字输入。我想在任何地方只允许字母和非连续的空格,除了在输入的开头或结尾不允许使用空格。所以我必须使数字,符号和连续的空格无效。

示例:

  1. rohit_kumar_mehta
  2. rohit__kumar_mehta
  3. rohit_kumar__mehta
  4. _rohit_kumar_mehta
  5. __rohit_kumar_mehta
  6. rohit_kumar_mehta_
  7. _ - 表示单个空格

    __ - 表示双倍空格

    字符串1是对的。

    字符串2,3,4,5和6是错误的。

    我尝试了以下代码:

    <!DOCTYPE html>
    <html>
    <head>
    <script>
    
    function validateForm() {
        var x = document.myForm.fname.value;
        var spacepos = x.indexOf(" ");
        var numbers = /^[0-9]+$/;
        var n = x.split("  ");
        //x.innerHTML = n[0];
    
        var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?0123456789";
        for (var i = 0; i < x.length; i++) {
            if ((iChars.indexOf(x.charAt(i)) != -1)) {
                alert("invalid...1");
                return false;
            }
            /**else if ((numbers.indexOf(x.numberAt(i)) != -1) && spacepos > 0) {
                alert("invalid...3");
                return false;
            }**/
        }
    
        var alphabets = /^[a-zA-Z]+$/;
    
        if ((n[0].match(alphabets) && spacepos > 0)) {
            alert("doublke space......1");
        }
        /*else if ((n[1].match(alphabets) && spacepos > 0)) {
            alert("doublke space.....2");
        }*/
        else if ((x.match(alphabets) || spacepos > 0)) {   
            alert("ok..2");
            return true;
        }
        else {
            alert("invalid..2");
            return false;
        }
    
        /**if(x==" ") {
            alert("invalid..3");
            return false;
        }
        else {
            alert("ok...3")
            return true;
        }**/
    }
    </script>
    </head>
    <body>
        <form name="myForm" onsubmit="return validateForm()" method="post">
            First name: <input type="text" name="fname">
            <input type="submit" value="Submit">
        </form>
    </body>
    </html>
    

3 个答案:

答案 0 :(得分:3)

您的功能可能是这样的:

function validateForm() {
    var value = document.myForm.fname.value;
    if(value.match(/^[a-zA-Z]+(\s{1}[a-zA-Z]+)*$/)) {
        return true;
    } else {
        alert('Wrong name');
        return false;
    }
}

此功能允许输入由一个或多个单词组成的名称,不带数字和特殊字符,单词之间有一个空格,没有开始或尾随空格。

此处示例http://jsbin.com/iducuq/1/edit

答案 1 :(得分:2)

尝试使用validateNameField()方法,这可以帮助你......

function validateNameField() {
    $value = $('#name').val();
    if(/^[a-zA-Z]+(\s{1}[a-zA-Z]+)*$/.test($value)) {
        alert('Acceptable valid Name');
    } else {
        alert('invalid Name');
    }
}

答案 2 :(得分:0)

尝试以相反的方式分析字符串:

function stripInvalidChars(input){
     var re = /[a-zA-Z]+/g;
     var match = new Array();
     match = re.exec(input);
     return match.join(' ');
}

此功能仅匹配有效字符(修剪空格)。 然后,您可以针对此新字符串检查原始字符串,如果它们相同则字符串有效。