1

这可能是一个简单的问题。
如果变量包含字母或数字,我需要匹配。以下不提供任何结果。

var onechar = 1;
if (onechar.match(/[0-9]/)) {
    alert ("A digit");
} else if (onechar.match(/[a-z]/)){
    alert ("A letter");
} else {
    alert ("Not a digit or a letter");
}

谢谢

4

5 回答 5

1

test使用这种检查效率更高,它会自动调用toString它的参数

var onechar = 1;
if ( /\d/.test(onechar) ) {
    alert ("A digit");
} else if ( /[a-z]/.test(onechar) ) {
    alert ("A letter");
} else {
    alert ("Not a digit or a letter");
}
于 2013-02-22T11:05:10.143 回答
0

使用 toString() 方法转换为字符串并使用正则表达式。

var onechar = 1;
onechar  = onechar.toString();
if (onechar.match(/[0-9]/)) {
 alert ("A digit");
} else if (onechar.match(/[a-z]/)){ 
  alert ("A letter"); 
} else {
  alert ("Not a digit or a letter"); 
}

问候,

于 2013-02-22T10:56:05.757 回答
0

你做得对,只需尝试添加 toString() 函数。所以代码看起来像:

var onechar = 1;
onechar = onechar.toString();
if (onechar.match(/[0-9]/)) {
    alert ("A digit");
} else if (onechar.match(/[a-z]/)){
    alert ("A letter");
} else {
    alert ("Not a digit or a letter");
}

除此之外,您还可以使用\d代替0-9.
而且由于不使用忽略大小写,您应该使用[a-zA-Z]匹配字母。

于 2013-02-22T11:02:33.513 回答
0

由于没有其他答案解决“单个”字母或数字的条件......

var onechar = "1"; // 1 is an integer, it wouldn't have a "match" function
if (onechar.match(/^[0-9]$/)) { // add ^ and $ to mark the beginning and end of the string
    alert ("A digit");
} else if (onechar.match(/^[a-z]$/i)){ // add /i for case insensitive match
    alert ("A letter");
} else {
    alert ("Not a digit or a letter");
}
于 2013-02-22T11:14:42.980 回答
-2

这就是你想要的:

var onechar = 1;
console.log( !!( '' + onechar ).match( /\d|\w/g ) );
>> true

var onechar = 'foo';
console.log( !!( '' + onechar ).match( /\d|\w/g ) );
>> true

var onechar = '+-)(';
console.log( !!( '' + onechar ).match( /\d|\w/g ) );
>> false
于 2013-02-22T11:07:51.863 回答