我有一個像下面的簡化示例的正則表達式:使用JavaScript的正則表達式查找第一個和最長的比賽
var exp = /he|hell/;
當我在一根繩子上運行它,它給我的第一場比賽,FX:
var str = "hello world";
var match = exp.exec(str);
// match contains ["he"];
我想要第一個和最長的匹配, ,並且我的意思是按索引,然後長度排序。
由於該表達式是由RegExp的數組組合而成的,因此我正在尋找一種方法來查找最長匹配而不必重寫正則表達式。
這可能嗎?
如果不是,我正在尋找一種方法來輕鬆分析表達式,並按正確的順序排列。但我無法弄清楚如何,因爲表情可能是一個複雜得多,FX:
var exp = /h..|hel*/
你的第二個例子會更有趣,如果它是例如:'/ h .... | hel * /' – 2010-01-21 14:00:50
它對我來說看起來是一樣的。我其實想說明最長的正則表達式不一定是最長的匹配。我的簡單表達式應該是'/ h。*?| hello /'。但我猜這個網站的用戶無論如何都知道我的意思。至少你做了:-) – 2010-01-21 14:06:56
如果可以在javascript中使用可變寬度lookbehind斷言(因爲它們例如在.NET和JGsoft正則表達式中),您可以通過以下方式實現它:'exp = /.*(?<=h .. | hel *)/'。但是到目前爲止,這個功能在JS中是不可預料的。 – 2010-01-21 15:43:17