2016-11-20 2 views
-2

Приветствую всех! Я хочу проверить предложение типа: «INT A, B, C», например, является истинным или ложным поэтому я использовал следующий код:Проверка утверждения предложения с помощью javascript и регулярного выражения

text="int a1,a2,a3" 
if(/int ((([a-z_A-Z]+[0-9]*),)+)$/g.test(text)){ 
document.write("true"); 
} 

но тест функция всегда возвращает ложное

Я не знаю, какое лучшее выражение я должен проверить

+0

насчет 'Int а, б, в,', должен ли это быть правдой? Кроме того, ваше регулярное выражение не разрешает 'a2b2'. Это то, что вы действительно хотите? –

+0

int a, b, c, должно быть ложным Я нашел хорошее решение /int ([a-zA-Z] + [0-9] * (, ([a-zA-Z] + [ 0-9] *)) *) $/g.test (str) –

+1

Я вижу, поэтому вы приняли ответ, который не отвечает на ваш вопрос. Также существует проблема с модификатором, который вы используете с помощью функции RegExp # test(). См. Http://stackoverflow.com/questions/1520800/why-regexp-with-global-flag-in-javascript-give-wrong-results –

ответ

0

После запятой вам необходимо будет добавить ?,.

Этот токен ? соответствует нулю и одному.

Обратите внимание, что последний номер в тексте a3 не имеет ,.

int ((([a-z_A-Z]+[0-9]*),?)+)$ 
0

У вас есть пара ошибок.

  1. Как вы писали, последняя кома требуется в конце строки.
  2. Я полагаю, что вы также хотите сопоставить int abc123 как правильную строку, поэтому вам нужно включить письмо в другие символы.
  3. Избегайте использования групп захвата только для проверки строк.

const str = 'int a1,a2,a3'; 
const regex = /int (?:[a-zA-Z_](?:[a-zA-Z0-9_])*(?:\,|$))+/g 

console.log(regex.test(str));