字不开始与迪和男人(前缀)

问题描述:

我有创造适合以下条件的正则表达式的一个问题:字不开始与迪和男人(前缀)

  1. 前缀:未与“地”和“男人”
  2. 的序列开始字符:AZ
  3. 后缀:结束与: •所示,在啊,IAH, •元音的序列(A,E,I,O,U), •然后“无线”, •辅音序列以我结尾

这是我创建的正则表达式,但它似乎不起作用。请帮帮我。

$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”。

试试下面的正则表达式:

^((?!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