我想在JavaScript中检查一个字符串是否为严格的字母数字组合。我尝试过以下方法:
var Exp = /^[0-9a-z]+$/;
if(!pwd.match(Exp))
alert("ERROR")
但是这个问题是,如果输入字符串包含全部字母或全部数字,它会通过。我希望该函数在包含字符和数字时才能通过。
var Exp = /^[0-9a-z]+$/;
if(!pwd.match(Exp))
alert("ERROR")
但是这个问题是,如果输入字符串包含全部字母或全部数字,它会通过。我希望该函数在包含字符和数字时才能通过。
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
尝试使用这个正则表达式:
/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+[0-9a-z]+$/i
只允许字母和数字。
不允许以下内容:
请参考实时演示
以下正则表达式允许:
/^([0-9]|[a-z])+([0-9a-z]+)$/i
/^(?=.*?[a-z])(?=.*?\d)[a-z\d]+$/i
^^^^^^^^^^ ^^^^^^^
at least at least
one letter one digit
function isAlphaNumeric(str) {
return str.match(/^[a-z0-9]+$/i) !== null;
}
我不想成为那个人,但我也不喜欢在这里找到的所有答案,所以这是我的答案。
function isalnum(data) {
return !/\W|_/.exec(data)
}
!/\W/.exec(data)
或者,更加直接:
/^\w*$/.exec(data)
这里我使用了RegExp.exec(),但你也可以选择使用String.match(),如果你选择使用String.match(),那么代码会写成:
!data.match(/\W|_/)
为什么我喜欢正则表达式呢?是的,我确实喜欢它们。
var pwd = 'somevalue';
if(pwd.match("^[a-zA-Z0-9]*$")){
alert('aplanumeric');
}
else{
alert('Not alphanumeric');
}
正则表达式:
/^[a-z0-9]+$/i
比正则表达式更快的方法:
function isAlphaNumeric(str) {
var code, i, len;
for (i = 0, len = str.length; i < len; i++) {
code = str.charCodeAt(i);
if (!(code > 47 && code < 58) && // numeric (0-9)
!(code > 64 && code < 91) && // upper alpha (A-Z)
!(code > 96 && code < 123)) { // lower alpha (a-z)
return false;
}
}
return true;
};
字符串 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]*$");
如果您想检查一个字符串是否同时包含字母和数字,请使用Pattern p。如果您想检查一个字符串是否包含字母或数字,您可以使用Pattern p1。如果您使用Pattern p1来检查一个字符串是否同时包含字母和数字,它将返回false。
/**
* 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();
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");
}
}
这适用于任意数量的字符(与被接受的答案不同)
/^[a-z0-9]*$/i
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
a-zA-Z
: 请查看 Unicode 属性转义,以便使用类似于/\p{Letter}/u
的正则表达式。 - karfau