2016-03-02 2 views
1

Я пытаюсь найти регулярное выражение для совпадения слов, начинающихся и заканчивающихся одним и тем же гласным. Мой вопрос в том, является ли это элегантным всеобъемлющим решением или я что-то упускаю? Пока это то, что я придумал после быстрого мозгового контроля. Моя предпочтительная среда - javascript/python без специальных библиотек и т. Д. Спасибо за полезные предложения.соответствующие слова, начинающиеся и заканчивающиеся на ту же букву

  • soln. 1) re =/(^ [aeiou]) \ w + \ 1/i;
  • soln. 2) re =/(^ [aeiou]) [a-zA-Z] + \ 1/i;

  • console.log (re.test ("abcda")); // true

  • console.log (re.test ("abcdo")); // ложь

ответ

3

Слово может быть сопоставлено с использованием границы слова \b:

var re = /\b([aeiou])[a-z]+\1\b/i; 

В regex demo

регулярных выражения спичек:

  • \b - ведущее граничное слово (потому что шаблон после того, как он соответствует символу слова)
  • ([aeiou]) - Группа 1 захвата гласного из указанного диапазона
  • [a-z]+ - один или более букв (как верхнего и нижнего регистров, поскольку используется модификатор /i)
  • \1 - обратная ссылка на гласной захваченного с первой группой
  • \b - конечные границы слова
+0

Stribizew: Ничего себе, спасибо за очень быстрый ответ! пальцы вверх! Я обсуждал, использовать ли границу слова \ b, поскольку я не знал, будут ли они работать повсеместно. Благодаря! – Shona

+0

Ну, '\ b' должен работать с английскими словами. С русским, болгарским и т. Д. Возникнет проблема :( –

+0

да, что я волновался, но я думаю, что буду придерживаться английских слов, скоро подумал о других :) :( – Shona

0
var re = /\b([aeiou])[a-z]+\1\b/i; 

дает ложные, если строка "аа". Строка начинается и заканчивается тем же гласным.

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