正则表达式确定字符串是否包含所有元音?

时间:2013-03-31 23:33:38

标签: regex

例如,所需的正则表达式将成功匹配“areriroru”但不匹配仅包含两个元音的“sadwdij”。

2 个答案:

答案 0 :(得分:2)

在C#中,您可以在将字符串与.*匹配之前为每个元音使用超前断言:

(?=.*a)(?=.*e)(?=.*i)(?=.*o)(?=.*u).*

如果您不关心元音的情况,可以使用:

(?=.*[Aa])(?=.*[Ee])(?=.*[Ii])(?=.*[Oo])(?=.*[Uu]).*

答案 1 :(得分:1)

一种可能性是枚举元音的所有排列。以下是总共120个中的前24个(所有a是第一个元音)。请注意,这形成了一个长表达式,但为了清楚起见,我将其拆分为行。

a.*e.*i.*o.*u
|a.*e.*i.*u.*o
|a.*e.*o.*i.*u
|a.*e.*o.*u.*i
|a.*e.*u.*i.*o
|a.*e.*u.*o.*i

|a.*i.*e.*o.*u
|a.*i.*e.*u.*o
|a.*i.*o.*e.*u
|a.*i.*o.*u.*e
|a.*i.*u.*e.*o
|a.*i.*u.*o.*e

|a.*o.*e.*i.*u
|a.*o.*e.*u.*i
|a.*o.*i.*e.*u
|a.*o.*i.*u.*e
|a.*o.*u.*e.*i
|a.*o.*u.*i.*e

|a.*u.*e.*i.*o
|a.*u.*e.*o.*i
|a.*u.*i.*e.*o
|a.*u.*i.*o.*e
|a.*u.*o.*e.*i
|a.*u.*o.*i.*e