true
如果字符串以辅音开头,我想返回。我有两个条件,不知道如何结合它们。
1) 它是一个字母 2) 它不是一个元音
!!(s[0] =~ /([a-z]&&[^aeiou])/i)
我尝试了各种其他语法,例如:
!!(s[0] =~ /([a-z])([^aeiou])/i)
!!(s[0] =~ /(([a-z])([^aeiou]))/i)
有没有办法在一个正则表达式中做到这一点?我需要分别检查每个条件吗?
您可以使用运算符组合字符类&&
:
/[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]/
您可以使用前瞻来检查字符串是否以字母和辅音开头。
\A(?=[^aeiou])(?=[a-z])
或者使用负面的展望。
(?i:(?![aeiou])[a-z]\w*)
/^[bcdfghjklmnpqrstvwxyz]/i
不会比更高级的选项长多少。