我正在尝试检查两个条件,
以下是我写的内容:
$reg = "/(?=.*(\s)) (?=.*(a|e|i|o|u))/";
但在跑步时:
if ( preg_match($reg,"kka "))
echo "YES.";
else
echo "NO.";
我得到了NO
。我做错了什么?
答案 0 :(得分:1)
答案 1 :(得分:1)
以下是使用前瞻的正确方法:
^((?=.*\s.*).)((?=.*[aeiou].*).).*$
在这里演示:
如果你想要一个不涉及使用正则表达式的选项,那就是从输入字符串中删除空格/元音,并验证结果长度是否已减少。
$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_replace
和strpos
函数的替代解决方案:
$str = " aa k";
if (($replaced = preg_replace("/[^aeiou ]/i", "", $str)) && strlen($replaced) >= 2
&& strpos($replaced, " ") !== false) {
echo 'Yes';
} else {
echo 'No';
}