我想检查一下javascript中的字符串是否是严格的ALPHANUMERIC。 我试过这个:
var Exp = /^[0-9a-z]+$/;
if(!pwd.match(Exp))
alert("ERROR")
但问题是如果它包含所有字母或全部数字,它会传递输入sting,如果它包含字符和数字,我希望函数通过。
答案 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
仅允许使用字母数字。
不允许:
参考 LIVE DEMO
以下正则表达式允许:
/^([0-9]|[a-z])+([0-9a-z]+)$/i
答案 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