我想做一个函数来检测/验证一个字符串至少有 2 个单词,并且每个单词至少有 2 个字母(除了两个字母,它可以包含任何其他字符 {没有数字},但我没有关心哪个和多少)。
现在,我不确定是否应该为此使用正则表达式,或者我可以通过其他方式来做到这一点。
如果我需要为它制作正则表达式,我也不知道该怎么做,因为我需要检查所有可用的字母。
这是我现在得到的正则表达式[A-Za-z]{2,}(\s[A-Za-z]{2,})
,它至少验证每个单词中的 2 个单词和 2 个字母。
编辑:重新思考后,我决定支持大多数语言,因为 kr-jp-cn 语言的工作方式与其他语言不同。我的主要规则不会让 kr-jp-cn 字母算作字母,而是算作字符。
编辑2:
这是我根据@message 答案使用的功能。
function validateName($name)
{
if (strcspn($name, '0123456789') == strlen($name)) //return the part of the string that dont contain numbers and check if equal to it length - if it equal than there are no digits - 80% faster than regex.
{
$parts = array_filter(explode(' ',$name)); //should be faster than regex which replace multiple spaces by single one and then explodes.
$partsCount = count($parts);
if ($partsCount >= 2)
{
$counter = 0;
foreach ($parts as $part)
{
preg_match_all('/\pL/u', $part, $matches);
if (count($matches[0]) >= 2)
{
$counter++;
}
}
}
if ($counter == $partsCount)
{
return 'matches';
}
}
return 'doesnt match';
}
谢谢您的帮助。