4

true如果字符串以辅音开头,我想返回。我有两个条件,不知道如何结合它们。

1) 它是一个字母 2) 它不是一个元音

!!(s[0] =~ /([a-z]&&[^aeiou])/i)

我尝试了各种其他语法,例如:

!!(s[0] =~ /([a-z])([^aeiou])/i)
!!(s[0] =~ /(([a-z])([^aeiou]))/i)

有没有办法在一个正则表达式中做到这一点?我需要分别检查每个条件吗?

4

3 回答 3

8

您可以使用运算符组合字符类&&

/[a-z&&[^aeiou]]/

请注意,&&运算符在字符类内部使用,而不是在之后使用。

文档中:

一个字符类可能包含另一个字符类。就其本身而言,这没有用,因为[a-z[0-9]]描述了与 相同的集合[a-z0-9]。但是,字符类也支持&&对其参数执行集合交集的运算符。两者可以组合如下:

/[a-w&&[^c-g]z]/ # ([a-w] AND ([^c-g] OR z))
# This is equivalent to:
/[abh-w]/
于 2013-10-09T14:41:28.710 回答
3

您可以使用前瞻来检查字符串是否以字母和辅音开头。

\A(?=[^aeiou])(?=[a-z])

或者使用负面的展望。

(?i:(?![aeiou])[a-z]\w*)
于 2013-10-09T14:39:36.477 回答
1
/^[bcdfghjklmnpqrstvwxyz]/i

不会比更高级的选项长多少。

于 2013-10-09T14:45:17.350 回答