检查字符串是否是javascript中的字母数字

时间:2013-04-30 11:41:40

标签: javascript regex

我想检查一下javascript中的字符串是否是严格的ALPHANUMERIC。 我试过这个:

var Exp = /^[0-9a-z]+$/;
if(!pwd.match(Exp))
alert("ERROR")

但问题是如果它包含所有字母或全部数字,它会传递输入sting,如果它包含字符和数字,我希望函数通过。

8 个答案:

答案 0 :(得分:4)

在我看来,Felix Kling的答案是最好的单一正则表达式解决方案,但我会考虑用三种模式来做。这允许您返回有用的错误消息:

if(pwd.match(/[^0-9a-z]/i))
    alert("Only letters and digits allowed!");
else if(!pwd.match(/\d/))
    alert("At least one digit required!");
else if(!pwd.match(/[a-z]/i))
    alert("At least one letter required!");
else
    // process pwd

您应该考虑为您的密码允许使用非字母数字字符 - 这样可以使它们更加安全。

答案 1 :(得分:3)

您可以使用lookaheads

/^(?=.*?[a-z])(?=.*?\d)[a-z\d]+$/i
   ^^^^^^^^^^  ^^^^^^^
    at least   at least
   one letter  one digit

仅供参考,限制密码允许的字符会减少熵很多(现在只有36个不同的字符),因此更容易破解。不要做这个限制。检查字符串是否包含某种类型的字符是好的(好吧,有一些理论认为这也会减少熵,但我对此知之甚少)。

另请参阅:Regex to accept atleast one alphabet one numeric char and one special Character

答案 2 :(得分:3)

试试这个正则表达式:

/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+[0-9a-z]+$/i

仅允许使用字母数字。

不允许:

  • 只有Alpha
  • 只有数字

参考 LIVE DEMO

更新

以下正则表达式允许:

/^([0-9]|[a-z])+([0-9a-z]+)$/i
  • 字母数字格式
  • 只有Alpha
  • 只有数字

答案 3 :(得分:2)

var pwd = 'somevalue';
if(pwd.match("^[a-zA-Z0-9]*$")){
   alert('aplanumeric');
}
else{
   alert('Not alphanumeric');
}

答案 4 :(得分:0)

String myString1 =" abcdefghijklmnop1";

    /**
     * To Check Alphanumeric myString1==ABCD is Working;myString1==123 is Working;myString1==ABCD123 is not Working
     */
    Pattern p1 = Pattern.compile("^[a-zA-Z0-9]*$");

如果检查它是否包含字母和数字,p1将显示为false因此如果要检查它是否包含字母或数字,请使用模式p,您可以使用模式p1

    /**
     * To Check both Alpha and Numeric only myString1==ABCD123 is Working
     */

    Pattern p = Pattern
            .compile("[a-zA-Z]+[0-9]+[a-zA-Z0-9]*|[0-9]+[a-zA-Z][a-zA-Z0-9]*");

    boolean hasSpecialChar = p.matcher(myString1).find();

    if (hasSpecialChar) {

        System.out.println("Working");

    } else {

        System.out.println("not Working");

    }

                     /***************OR*******************/

char [] charArray = myString1.toCharArray();

    for (char ch : charArray) {

        if (Character.isUpperCase(ch)) {

        }
        if (Character.isLetter(ch)) {

            containsletter = true;
        }

        if (Character.isDigit(ch)) {

            containsdigits = true;

        }
     }
       if(containsletter&&containsdigits){

            System.out.println("Working");

       }
       else{

            System.out.println("not Working");

       }

}

答案 5 :(得分:0)

正确的功能是

function isAlphaNumeric(str) {
  return str.match(/^[a-z0-9]+$/i) !== null;
}

答案 6 :(得分:0)

一种无需正则表达式的简单方法:

function stringIsStrictlyAlphaNumeric(string)
{
    //returns true for letters, digits or both
    var stringIsLooselyAlphanumeric = string => [...string].every(character => '0123456789abcdefghijklmnopqrstuvwxyzABCEDEFGHIJKLMNOPQRSTUVWXYZ'.includes(character));
    //returns true for digits only 
    var stringIsComposedOfDigitsOnly = string => [...string].every(character => '0123456789'.includes(character));  
    //returns true for letters only 
    var stringIsComposedOfLettersOnly = string => [...string].every(character => 'abcdefghijklmnopqrstuvwxyzABCEDEFGHIJKLMNOPQRSTUVWXYZ'.includes(character)); 
    //returns true for letters and digits only.
    return stringIsLooselyAlphanumeric(string) && !stringIsComposedOfDigitsOnly(string) && !stringIsComposedOfLettersOnly(string);  
}

请这样使用:

stringIsStrictlyAlphaNumeric('hello123'); //returns true
stringIsStrictlyAlphaNumeric('hello');    //returns false
stringIsStrictlyAlphaNumeric('123');      //returns false
stringIsStrictlyAlphaNumeric('');         //returns false

答案 7 :(得分:0)

这适用于任意数量的字符(与接受的答案相反)

/^[a-z0-9]*$/i