我有一个像下面的简化示例的正则表达式:使用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