2017-02-09 7 views
0

Ich habe ein Problem, einen regulären Ausdruck erstellen, die die folgenden Kriterien entsprechen:Wort beginnt nicht mit Di und Männern (Präfix)

  1. prefix: Nicht mit „di“ und „Männern“ ab
  2. Sequenzen Zeichen: az
  3. Suffix: Beenden mit: • in, an, ah, IAH, • Sequenzen von Vokal (a, e, i, o, u), • dann „wi“ • Sequenzen von Konsonanten endend mit i

Dies ist die Regex, die ich erstellt habe, aber es scheint nicht zu funktionieren. Bitte hilf mir.

$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); 

Zum Beispiel sollte die Ausgabe Wort "lag", nicht "dian" erfassen.

Antwort

0

Versuchen Sie, die folgende regex:

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

Erläuterung:

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

Demo hier:

Regex 101

+0

habe ich versucht, aber es funktioniert nicht .. das Outpu t sollte "liegen", nicht "dian" – shequin

+0

Sie haben uns nie gesagt, dass Sie versuchen, etwas zu erfassen/zu ersetzen. Ich habe nach Ihren Anforderungen geantwortet. Wenn Sie erfassen/ersetzen müssen, dann aktualisieren Sie Ihre Frage. –

+0

Entschuldigung für den Fehler, ich habe die Frage aktualisieren. – shequin

Verwandte Themen