regex noob здесь, я создал валидатор регулярных выражений для ввода, я пытаюсь проверить следующее:
{ word } //valid
{ word } ; { word } //also valid
поэтому я придумал это:
^[\s]*\{[a-zA-z\s]*\}[\s]*$|^[\s]*\{[a-zA-z\s]*\}[\s]*\;[\s]*[\s]*\{[a-zA-z\s]*\}[\s]*$
он работает, но проблема в том, что я ничего не могу добавить после этого. Я хочу повторить часть "; {word}" столько, сколько необходимо. Как я могу это сделать?
Вы можете использовать
/^\s*{\s*[a-zA-Z]+\s*}\s*(?:;\s*{\s*[a-zA-Z]+\s*}\s*)*$/
подробности
^
- начало строки\s*{\s*[a-zA-Z]+\s*}\s*
- a {
заключено с пробелами 0+, 1+ ASCII-буквы, а затем a }
заключенные с пробелами 0+(?:
- начало группы, не связанной с захватом: ;
- полуколона\s*{\s*[a-zA-Z]+\s*}\s*
- a {
заключено с пробелами 0+, 1+ ASCII-буквы, а затем a }
заключенные с пробелами 0+)*
- ноль или более раз$
- конец строки.Просто используйте:
^((\{\s?[a-zA-Z]+\s?\}\s?;\s?)+)?(\{\s?[a-zA-Z]+\s?\}\s?;?\s?){1}$
соответствует всем этим случаям:
{ word }
{word}
{ word } ; { word } ; { word }
{ word } ; { word }
{word};{word};{word}
{word};{word}
{ word } ; { word } ; { word } ;
{ word } ; { word } ;
{word};{word};{word};
{word};{word};
\w
также соответствует _
и цифрам. ОП не хотел им соответствовать.