$ regex ='/ [aeiou] * /'
那匹配“aeiioauo” 或者只是“aaaaaaaaaaa”,“eeeeeee”,“iiiii”等(集合中只有一个字符中的零个或多个)。
谢谢
答案 0 :(得分:4)
由于这里没有认真的答案,我会给出一个认真的答案。
当你通过时:
$regex = '/[aeiou]*/'
到preg_match
或preg_match_all
(或其他一些功能),它会报告任意字符串的匹配。
preg_match
,preg_match_all
,preg_replace
和preg_replace_callback
默认情况下都会找到非重叠 子串匹配正则表达式。 (其他语言可能具有断言整个字符串与正则表达式匹配的函数,这是不同的。)
[aeiou]*
将匹配任何元音(英文), 0 或更多次,连续出现。由于正则表达式在没有任何字符时匹配(空字符串),并且空字符串可以在任何字符串中的任何位置,因此您将始终获得至少一个匹配。
要检查字符串是否只包含元音,您需要锚定正则表达式,^
表示字符串的开头{{1表示字符串的结尾:
$
上面的正则表达式只会在输入字符串只包含元音时匹配,或者是空字符串
匹配示例:$regex = '/^[aeiou]*$/'
,(空字符串),aeuuuooiiii
不匹配的示例:a
,aaaaaaaaaab
如果你想匹配输入字符串中元音的一些连续序列(子串),你应该使它至少匹配1个元音:所以我们使用#@#$
代替+
*
匹配示例:$regex = '/[aeiou]+/'
中的eeee
和iiuo
; ffffeeeeddiiuo
中的e
不匹配的示例:不匹配red
希望这有助于初学者的教程。
答案 1 :(得分:1)
是的,它会的。 []
表示任何一组,因此它符合要求。但是由于你没有其他条件,这也会匹配任何其他字符串。
答案 2 :(得分:0)
正则表达式将匹配它可以使用的所有字符,因为默认情况下正则表达式是贪婪的。顺便说一下:它不仅会匹配iiiii等,还会匹配aeiio等等。
答案 3 :(得分:0)
使用该正则表达式将匹配" aeiioauo"或者只是" aaaaaaaaaaa," " eeeeeee"," iiiii"
但它也会匹配空格,因此" aaaaeeee iiiiii"将匹配为
Array
(
[0] => Array
(
[0] => aaaaeeee
[1] =>
[2] => iiiiii
[3] =>
[4] =>
)
)
而不是
Array
(
[0] => Array
(
[0] => aaaaeeee
[1] => iiiiii
)
)
所以我建议更改' *'到一个' +'
FROM --> $regex = '/[aeiou]*/';
TO --> $regex = '/[aeiou]+/';
编辑:这是一个用于测试php中正则表达式的有用站点