2014-03-28 33 views

回答

2

你可以得到它通過使用\P{Lu}類有點短:

[^\P{Lu}AEIOU] 

[我不會限制這爲Javascript因爲regex101主要是PCRE味】

上面有14個字符。由於謎題還會添加字邊界和標誌中的字符,因此這會爲//g增加3個字符,因此總共需要17個字符。

在.NET中,你可以做短:

[B-Z-[EIOU]] 

(12個字符長)

爲JavaScript:

(?![EIOU])[B-Z] 

15個字符不包括分隔符和標誌。

+0

謝謝!我對這種表示法並不熟悉。任何地方我可以閱讀更多關於它,並且Javascript支持它嗎? –

+0

@KeithGrout對不起,JS不支持這個類。你可以閱讀更多關於他們[這裏](http://perldoc.perl.org/perlunicode.html#Unicode-Character-Properties)。 – Jerry

+0

太棒了。你的解決方案*是每個regex101最短的解決方案(我誤以爲我在使用JavaScript)。接受其他答案,因爲它回答了我所問的內容......沒有難過的感覺呃? –

1

我的正則表達式長17個字符!我還是矮一點!

(?=[A-Z])[^AEIOU] 

使用它先行先檢查下一個字符是A-Z與否之間。然後檢查Non-Vowel角色。

+0

那麼,這與執行if語句類似嗎?例如,如果(大寫字母){return!CapitalVowel} –

+0

@KeithGrout在這種特殊情況下,是的。但它的迴歸,它的匹配。 –

4

16字符的正則表達式

(?![AEIOU])[A-Z]

+0

hehehe我做了相反的一個,並得到了一個字符更多:( –

+0

哈哈,我看到了你的帖子,就像oooh如此接近 –

+1

你知道嗎?我們總是積極的,從來沒有想過以負面的方式是啊)B-) –