我想检查用户是否输入了接近有效名称的内容。因此,如果它输入类似gbcvcvrt
的内容,我会想要验证它并将其标记为不是真名。像theg+vowel
这样的东西应该被验证为正确的名称。
在任何长度的字符串上,代码应检测四个连续的非元音字母。 我不希望任何人的名字顺便提一下节奏
考虑
$String = 'therhythm';
我们无法检查前四个字符,我们必须遍历整个字符串并检查四个连续的四个非元音字母表,无论它们位于字符串的哪个位置。这样我们就可以验证$ String是无效的,即使前五个字符会验证它,如果我们检查前四个字母表。
答案 0 :(得分:2)
根据您的最新修改:您可以使用以下正则表达式:
^(?!.*?[^aeiou]{5})(?!.*?[aeiou]{3})[a-z]*$
打破它:
[^aeiou]
=>匹配除元音之外的任何东西(?!.*?[^aeiou]{5})
=>否定前瞻以确保没有连续5个辅音的情况(?!.*?[aeiou]{3})
=>确保没有3个连续元音的情况[a-z]*
=>确保输入中只有字母答案 1 :(得分:1)
试试这个
<?php
$string = "gkwohtfeiak3d";
function checkstring($input){
if(preg_match("/[0-9]+/", $input, $match) || preg_match("/[AEIOU]{3,}/i", $input, $match)){
if(preg_match("/[0-9]+/", $input, $match)){
echo "Your string has numbers.<br/>";
}
if(preg_match("/[AEIOU]{3,}/i", $input, $match)){
echo "Your string has three or more consecutive vowels";
}
}else{
$checkthis = substr($input, 4);
if(preg_match("/[AEIOU]+/i", $checkthis, $match2)){
echo "$input has vowels after the fourth character";
}else{
echo "$input has no vowels after the fourth character";
}
}
}
checkstring($string);
?>
答案 2 :(得分:1)
^(?![aeiou]{3,})(?:\D(?![^aeiou]{4,}[aeiou]*)(?![aeiou]{4,})){3,}$
这个正则表达式满足您的所有条件:
<?php
$values = array(
"test",
"al",
"beautiful",
"eautiful",
"mohsen",
"ehsasssss",
"a test",
"yeeeeee",
"test",
"mohammad",
"ali",
"mohsen",
"mohsenmlpl",
"allllll",
"allilllllo",
"thisisatest",
"zagros",
"4o54o45646o",
"therhythm",
"theg+vowel",
"gbcvcvrt",
"user3109875",
);
foreach ($values as $key => $value)
{
echo "$value => ", preg_match("/^(?![aeiou]{3,})(?:\D(?![^aeiou]{4,}[aeiou]*)(?![aeiou]{4,})){3,}$/", $value)? "TRUE" : "FALSE", "\n";
}
<强>输出强>:
test => TRUE
al => FALSE
beautiful => TRUE
eautiful => FALSE
mohsen => TRUE
ehsasssss => FALSE
a test => TRUE
yeeeeee => FALSE
test => TRUE
mohammad => TRUE
ali => TRUE
mohsen => TRUE
mohsenmlpl => FALSE
allllll => FALSE
allilllllo => FALSE
thisisatest => TRUE
zagros => TRUE
4o54o45646o => FALSE
therhythm => FALSE
theg+vowel => TRUE
gbcvcvrt => FALSE
user3109875 => FALSE
答案 3 :(得分:0)
对于测试字符串asdfasdf
,请使用以下正则表达式:
([bcdfghjklmnpqrstvwxyz]{3}+)/ig
它会捕获3个或更多重复的辅音,你可以用尊敬的逻辑来测试它!
使用PHP你可以尝试这样的事情:
function testString($data) {
if (!preg_match('/([bcdfghjklmnpqrstvwxyz]{3}+)/', $data)) {
return 'Valid';
} else {
return 'Invalid';
}
}
echo testString('asasacdDdfasdf');
echo '<br>';
echo testString('Ilia');