RegEx, щоб знайти два або більше послідовних символів


99

Мені потрібно визначити, чи містить рядок два або більше послідовних альфа-символів. Два або більше [a-zA-Z]поруч. Приклад:

"ab" -> valid
"a1" -> invalid
"a b" -> invalid
"a"-> invalid
"a ab" -> valid
"11" -> invalid

Відповіді:


208

Це повинно зробити трюк:

[a-zA-Z]{2,}

Можливе {2}без коми також повинно працювати, так?
Олександр Міллс

17
Олександр, лише для того, щоб прояснити кілька речей: {2} означає, що довжина повинна бути 2. {2,} означає, що довжина виразу може бути => 2
Шмаркус

1

Особисто (як нубі) я використовував:

[0-9][0-9]+.

Але той від Саймона, набагато кращий! = D


0

[a-zA-Z] {2,} не працює для двох або більше однакових послідовних символів. Для цього слід захопити будь-який символ, а потім повторити захоплення таким чином:

(.) \ 1

Дужка фіксує. який представляє будь-який символ, а \ 1 є результатом захоплення - в основному шукаємо послідовне повторення цього символу. Якщо ви хочете конкретизувати, які символи, які ви хочете знайти, однакові послідовні, просто замініть "будь-який символ" класом символів ...

([a-zA-Z]) \ 1

Знаходить послідовні повторювані малі або великі літери. Збіги на "abbc123", а не "abc1223". Щоб передбачити пробіл між ними (тобто ab), тоді включіть необов’язковий пробіл у регулярний вираз між захопленим символом та повтором ...

([az] AZ]) \ s? \ 1


Я цілком впевнений, що ви неправильно зрозуміли запитання, оскільки йдеться про два листи. Ваше регулярне вираження стосується іншого випадку: два подібні літери!
csabinho

-4

Я майже впевнений, що ви можете просто використовувати [Az] замість [a-zA-Z], щоб отримувати маленькі та великі альфа-символи http://www.w3schools.com/jsref/jsref_obj_regexp.asp


22
-1: Це ще один чудовий приклад того, чому ви ніколи не повинні використовувати w3schools для довідки чи освіти. [A-z]відповідає більше, ніж буквам. Зокрема, він також відповідає квадратним дужкам, зворотним скісним рискам, символам вставки, підкресленням та зворотним позначкам.
Тім Пітцкер,

Справді, те, що каже @TimPietzcker, є правильним; символи, про яких він згадав, перебувають між ними, Zі aтому (помилково) будуть включені в такий шаблон. Я повторюю рекомендацію: Не використовуйте w3schools! У ньому є багато делікатно поганої інформації, подібної цій.
Ендрю Барбер,

5
Ой, перший дзвін на Stack, це болить більше, ніж я думав. Отже, включаючи Az, він відповідає усьому, починаючи від [AZ купу речей, які я не хочу, і az], до всіх символів між великими та без великих букв? danshort.com/ASCIImap
Кевін

щоб я міг сказати щось на зразок [! - +]? Також чи є спосіб отримати доступ до коду символу всередині регулярного виразу, наприклад, [65-90], який був би таким самим, як [AZ]?
Кевін,

@Kevin [65-90]буде відповідати 5- 9(що також включає 6) та 0!
csabinho
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.