Regex, чтобы исключить один символ, но разрешить, если более одного символа - PullRequest
0 голосов
/ 24 сентября 2019

Попытка создать регулярное выражение, чтобы не допустить один символ Q или q, но разрешить Q или q, если более одного символа.

Tried:

/^[^Q]|[^q]{0,1}$/

Пример:

Q     //no match
q     //no match
Quest //match
Qu    //match

Ответы [ 4 ]

1 голос
/ 24 сентября 2019

Вы можете использовать

^(?:[^qQ]|.{2,})$

См. Демонстрацию регулярных выражений и график регулярных выражений :

enter image description here

Подробности

  • ^ - начало строки
  • (?: - начало группы без захвата:
    • [^qQ] - любой символ, кроме q или Q
    • | - или
    • .{2,} - любые 2 символа (кроме символов перевода строки для двигателей NFA))
  • ) - конец группы
  • $ - конец строки.

Для соответствия строке, которая имеетнет " или ' в нем с использованием приведенного выше регулярного выражения, вам нужно использовать

^(?:[^qQ'"]|[^'"]{2,})$
        ^^  ^^^^^

, где [^'"] соответствует любому символу, но ' и ".

1 голос
/ 24 сентября 2019

Привязывает (и смотрит) к спасению:

^(?![qQ]$).+

См. демонстрацию на regex101.com .

1 голос
/ 24 сентября 2019

Используйте отрицательный взгляд, чтобы утверждать, что автономные буквы Q не появляются:

^(?!.*\b[Qq]\b).*$

Это не будет соответствовать любому входу, содержащему одиночные q или Q.

Демо

0 голосов
/ 24 сентября 2019

Как насчет /^[^Qq]*$|[Qq].*[Qq]/?
"|"это или.Левая рука заявляет, что без q вообще, от начала до конца, когда право находит 2 вхождения.

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