正则表达式匹配辅音

时间:2011-06-14 01:21:17

标签: regex validation

如果相同的辅音重复三次或更多次,我如何使用regex expression进行检测?

我的想法是匹配tttoollikkkelikkkkke

等字词

6 个答案:

答案 0 :(得分:21)

试试这个:

([b-df-hj-np-tv-z])\1{2,}

说明:

  • [b-df-hj-np-tv-z]都是辅音
  • \1是对第一组的反向引用(即相同的字符)
  • {2,}表示“前一个词中的2个或更多个”,共计3个或更多

经过测试,这可行。

答案 1 :(得分:7)

这是关于我能想到的最短的正则表达式:

(?i)([b-z&&[^eiou]])\1\1+

这使用正则表达式字符类减法排除元音。
我没有提到“a”,因为我从“b”开始了范围 使用(?i)会使正则表达式不区分大小。

查看live demo

答案 2 :(得分:6)

某些正则表达式库中可能有快捷方式,但您可以随时...

b{3,}|c{3,}|d{3,}...

例如,某些lib允许您使用后引用进行匹配,后引用可能有点清洁......

(bcd...)\1{2,}

答案 3 :(得分:2)

来自更高[b-df-hj-np-tv-z])\1{2,}的答案的正则表达式有错误(" y"是雾霾)

应为[b-df-hj-np-tv-xz])\1{2,}

答案 4 :(得分:0)

您可以将捕获组与反向引用一起使用。这将捕获重复的符号:

/(
   ([\w])        ## second group is just one symbol
   \2            ## match symbol found in second groups
   \2+           ## match same symbol one or more times
)/x              ## x is just to allow inner comments

但并非所有regexp引擎都支持反向引用。

答案 5 :(得分:0)

我个人会反向解决这个问题;而不是使用[b-df-hj-np-tv-z],而是使用双负数[^\W_aeiou]

/([^\W_aeiou])\1\1+/i

这有一个使用双负号的字符类:匹配除非单词字符,下划线或元音之外的所有字符。忽略非ASCII元音,只有辅音可以匹配。保存匹配项后,正则表达式将查找相同辅音(不区分大小写)的匹配项,然后再匹配一个或多个,从而使我们获得3个以上连续的辅音。