如果字符串以辅音开头,我想返回true
。我有两个条件,不知道如何组合它们。
1)这是一封信 2)它不是元音
!!(s[0] =~ /([a-z]&&[^aeiou])/i)
我尝试了各种其他语法,如:
!!(s[0] =~ /([a-z])([^aeiou])/i)
!!(s[0] =~ /(([a-z])([^aeiou]))/i)
有没有办法在一个正则表达式中执行此操作?我是否需要单独检查每个条件?
答案 0 :(得分:8)
您可以使用&&
运算符组合字符类:
/[a-z&&[^aeiou]]/
请注意&&
运算符在字符类中使用,而不是之后。
字符类可能包含另一个字符类。本身就是这个 没有用,因为
[a-z[0-9]]
描述了与[a-z0-9]
相同的集合。 但是,字符类也支持&&
运算符 对其参数执行set intersection。这两者可以合并为 如下:/[a-w&&[^c-g]z]/ # ([a-w] AND ([^c-g] OR z)) # This is equivalent to: /[abh-w]/
答案 1 :(得分:3)
您可以使用前瞻来检查字符串是否以字母和辅音开头。
\A(?=[^aeiou])(?=[a-z])
或使用负面展望。
(?i:(?![aeiou])[a-z]\w*)
答案 2 :(得分:1)
/^[bcdfghjklmnpqrstvwxyz]/i
比发烧友的选择还要长。