2015-08-10 3 views
1

Работа над созданием регулярного выражения javascript, которое проверяет этот шаблон: a, b, c, etc .. с определенными буквами.Regex для строки с разделителями-запятой, содержащей только определенные буквы

Другими словами, буквы, запятые запятые, пробелы после запятой. Для прохождения теста должно быть хотя бы одно письмо, но после него может быть бесконечное количество.

меня это до сих пор:

/[cdefgab]+(, [cdefgab]+)*/ 

Но у меня возникают проблемы при получении его на работу, как описано.

ответ

0
/[a-z](, [a-z])*/ 

Это требует, по крайней мере, одну букву, то может иметь любое количество букв (0 или более) предшествуют запятой и пробелом.

редактировать:, если вы ищете только для определенных букв, заменить экземпляры [a-z] с буквами, которые вы ищете заключены в квадратные скобки. т.е. [cefg]

+0

Великий. Я сделал то, что вы предлагали, но когда я помещаю письмо, а затем период или тире, он все равно проходит. Он должен быть только запятой и иметь пробел после него. Что мне не хватает? –

+1

Внутри кронштейнов нет необходимости в трубах! –

+1

обновлено, спасибо @chsdk. @Stack Juice2, можете ли вы привести пример строки? Если вы хотите исключить символы, это становится более трудным, так как начало регулярного выражения ('[a-z]') будет технически «передавать» любую строку, содержащую букву. – Jakemmarsh

1

Если вам нужно иметь последовательность букв, разделенных запятой и пробелом, вы должны использовать это регулярное выражение:

/[cdefgab](, [cdefgab])*/ 

В своем регулярном выражении нет никакой необходимости в + квантора, если это только одна буква ,

ЭТО a DEMO.

EDIT:

Если это означало точно соответствовать одна буква или последовательность букв, разделенных запятой, так что вы должны использовать {1} ровно один встречаемости, ваше регулярное выражение должно быть как это:

/[cdefgab]{1}(, [cdefgab])*/ 

EDIT2:

Чтобы точно соответствовать разыскиваемой последовательности CHARAC Ослабляет и включить/отключить кнопку отправки, соответственно, вы должны использовать это регулярное выражение /^[cdefgab]{1}(, [cdefgab])*$/) с KeyUp случае ввода, это DEMO:

var validateInput = function validateInput(input) { 
 
    var submitButton = document.getElementById("submitButton"); 
 
    if (input.value.match(/^[cdefgab]{1}(, [cdefgab])*$/)) { 
 

 
    console.log("matches"); 
 
    submitButton.disabled = false; 
 

 
    } else { 
 

 
    console.log("Unmatches"); 
 
    submitButton.disabled = "disabled"; 
 
    } 
 
}
Text: 
 
<input type="text" id="txt" onkeyup="validateInput(this);" /> 
 
<input type="submit" id="submitButton" disabled/>

+0

Хорошо, но мне нужно сделать, чтобы форма не была отправлена, если она не соответствует этому точно. Похоже, что как только я правильно запустил последовательность, поместите номер, который он все еще проходит. Должно ли это происходить? –

+0

@StackJuice Нет, этого не должно быть, отредактируйте вопрос, чтобы включить весь код для проверки? –

+0

Я думаю, что у вас его почти нет.Предположим, что я начинаю с капитала «C», кнопка отключена, и это то, что я хочу, но как только я вхожу в нижний регистр «a», тогда он отключен. Мне нужно, чтобы это было отключено, если оно не подходит идеально. Это помогает? –

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