2016-07-08 3 views
2

У меня есть это правилоJavascript РегВыр не являющиеся последовательные символы

var reg = new RegExp('[a-z]{3}'); 

что означает, что допускается использование символов между а-г и, по меньшей мере, 3 случая. Итак, мне интересно, есть ли способ сопоставить это правило с несекретными символами.

Другими словами,

"abc" => valid 
"aaa" => not valid 

Спасибо!

+0

Предполагается, что «aba» должен быть действительным, или вы не хотите, чтобы символ использовался более одного раза? (Кроме того, я бы описал «abc» как последовательные символы и «aaa» как повторяющиеся символы.) – nnnnnn

+0

'{3}' is * точно * 3 символа, '{3,}' будет * не менее * 3. – maraca

+0

, и вам, вероятно, тоже нужны якобы '^ ... $', потому что я не думаю, что вы хотите принять 3 символа из 4-х буквенных строк или вы? – maraca

ответ

1

Вот рабочее регулярное выражение для ровно 3 (или N) символов, если число не фиксировано становится более сложным:

^([a-z])(?!\1{2})[a-z]{2}$ 
1 2 3 4 5 6 7 8 

Объяснение:

  1. ^ совпадает с началом строка
  2. ([a-z]) соответствует одному из принятых символов и сохранять его (группа 1)
  3. (?!...) отрицательный предпросмотр, что в этих скобках не принят
  4. \1 ссылки на первые группы (первый символ здесь)
  5. {2} неоднократных ровно в два раза
  6. [a-z] принятых символов
  7. {2} неоднократного ровно в два раза
  8. $ соответствует концу строки

Link here (Я добавил gm, чтобы можно было протестировать несколько выражений.)

+0

Удивительный мужчина! Для тех, кто хочет сделать регистр нечувствительным и включать числа от где-то между 2-11 символами.^(\ W) (?! \ 1 {2}) \ w {1,10} $ Очень впечатляющее регулярное выражение сэр! –

+0

@SteveKline Спасибо. Я думаю, ваше регулярное выражение проверяет, что первый символ не повторяется три раза, если вы хотите проверить его в любой позиции на любую длину, тогда он становится очень сложным (не знаю, возможно ли это). – maraca

+0

Спасибо, он решил мою проблему! \ О / –

0

Попробуйте использовать исключающий lookahead (?![a-z]{3}), это будет не соответствует 3 равным символам в последовательности.

+0

Это не работает: [Regex101] (https://regex101.com/r/rM9bQ6/1). –

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