如何在连续4个字符后检查字符串是否没有元音

use*_*875 5 php regex char preg-replace preg-match

我想检查用户是否输入了接近有效名称的内容.所以,如果输入类似的内容gbcvcvrt,我想验证它并将其标记为不是真名.类似的东西theg+vowel应该被验证为正确的名称.

在任何长度的字符串上,代码应该检测四个连续的非元音字母表.我不希望任何人的名字顺便说一下

考虑

$String = 'therhythm';
Run Code Online (Sandbox Code Playgroud)

我们无法检查前四个字符,我们必须遍历整个字符串并检查四个连续的四个非元音字母表,无论它们位于字符串的哪个位置.这样我们就可以验证$ String是无效的,即使前五个字符会验证它,如果我们检查前四个字母表.

  • 也不应该包含3个连续的元音,
  • 不应包含数字,
  • 非字母字符

anu*_*ava 2

根据您的最新编辑:您可以为此使用以下正则表达式:

^(?!.*?[^aeiou]{5})(?!.*?[aeiou]{3})[a-z]*$
Run Code Online (Sandbox Code Playgroud)

在线演示:http://regex101.com/r/vM0aN9

分解一下:

  • [^aeiou]=> 匹配除元音以外的任何内容
  • (?!.*?[^aeiou]{5})=> 负向前视以确保不存在 5 个连续辅音的情况
  • (?!.*?[aeiou]{3})=> 确保不存在 3 个连续元音的情况
  • [a-z]*=> 确保输入中只有字母