2017-02-09 21 views
0

Я имею проблему создание регулярного выражения, которое соответствует следующим критериям:Слова не начиная с ди и мужчинами (префикс)

  1. префикса: Не начиная с «ди» и «мужчинами»
  2. последовательностей характер: аз
  3. суффикса: End с: • в, на, ах, МАГ, • последовательности гласных (а, е, I, O, U), • затем «Wi», • последовательности согласных заканчивается на i

Это регулярное выражение, которое я создал, но, похоже, не работает. Пожалуйста, помогите мне.

$count = preg_match_all("^(^\bdi|^\bmen]\w*(in|at|ah|iah)((a|e|i|o|u)(wi)((?!(a\e\i\o\u)i$/",$value,$match); 

Например, выход должен записывать слово «lain», а не «dian».

ответ

0

Попробуйте следующее регулярное выражение:

^((?!di|men)[a-z]+(in|at|ah|iah)[aeiou]*(?:wi)?[a-z]*i?)$ 

Объяснение:

^((?!di|men) assert that string does not start with 'di' or 'men' 
[a-z]+   one or more sequence of characters a-z 
(in|at|ah|iah) ends with on these patterns 
[aeiou]*  followed by optional sequence of vowels a,e,i,o,u 
wi    followed by optional 'wi' 
[a-z]*   optional sequence of characters a-z 
i?)$   optional 'i' 

Демо здесь:

Regex 101

+0

я пытался, но он не работает .. .выход t должен быть «lain», а не «dian» – shequin

+0

Вы никогда не говорили нам, что пытаетесь захватить/заменить что-либо. Я ответил в соответствии с вашими требованиями. Если вам нужно захватить/заменить, обновите свой вопрос. –

+0

извините за ошибку, у меня есть вопрос. – shequin