结合两个条件:元音和空间

时间:2016-10-08 06:40:04

标签: php regex pcre

我正在尝试检查两个条件,

  1. 该字符串应包含元音。
  2. 字符串应包含空格。
  3. 以下是我写的内容:

    $reg = "/(?=.*(\s)) (?=.*(a|e|i|o|u))/";
    

    但在跑步时:

    if ( preg_match($reg,"kka "))
            echo "YES.";
        else
            echo "NO.";
    

    我得到了NO。我做错了什么?

3 个答案:

答案 0 :(得分:1)

((?:.*)[aeiouAEIOU]+(?:.*)[ ]+(?:.*))|(?:.*)[ ]+((?:.*)[aeiouAEIOU]+(?:.*))

你可以试试这个

Explnation

答案 1 :(得分:1)

以下是使用前瞻的正确方法:

^((?=.*\s.*).)((?=.*[aeiou].*).).*$

在这里演示:

Regex101

如果你想要一个不涉及使用正则表达式的选项,那就是从输入字符串中删除空格/元音,并验证结果长度是否已减少。

$input = "kka ";
if (strlen(preg_replace("/\s/", "", $input)) < strlen($input) &&
    strlen(preg_replace("/[aeiouAEIOU]/", "", $input)) < strlen($input)) {
    echo "both conditions satisfied"
else {
    echo "both conditions not satisfied"
}

答案 2 :(得分:0)

使用preg_replacestrpos函数的替代解决方案:

$str = " aa k";

if (($replaced = preg_replace("/[^aeiou ]/i", "", $str)) && strlen($replaced) >= 2 
    && strpos($replaced, " ") !== false) {
    echo 'Yes';
} else {
    echo 'No';
}