2013-02-22 2 views
0

Это может быть простой вопрос.
Мне нужно совместить, если переменная содержит либо букву, либо цифру. Следующий результат не дает никакого результата. МетодСоответствует одной букве или цифре

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"); 
} 

Благодаря

+2

'onechar' является интегралом er, а не строка. Это действительно не имеет никакого отношения к jQuery. – Blender

ответ

0

Это более эффективно использовать 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"); 
} 
+0

Это работает как очарование для меня. Спасибо – user2099032

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"); 
} 

С уважением,

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"); 
} 

Else Кроме этого, вы можете также использовать \d вместо 0-9.
И так как игнорировать дело не используется, вы должны использовать [a-zA-Z] для соответствия букве.

+0

Отлично. Это тоже работает. Спасибо – user2099032

+0

Добро пожаловать :) –

-1

Это то, что вы хотите иметь:

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 
+1

Соответствует '_', который является символом слова. И не нужно использовать флаг 'g'. – MikeM

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"); 
} 
+0

Это работает. Спасибо за объяснение. Однако моя следующая реализация - принять onechar как входную, и это решение не подходит для этого расширения. – user2099032

Смежные вопросы