正則表達式匹配是有功能的,其工作爲:是否有任何JavaScript函數,它不從指定索引
var regex=/\s*(\w+)/;
var s="abc def ";
var m1=regex.exec(s,0); // -> matches "abc"
var m2=regex.exec(s,3); // -> matches "def"
我知道另一種方法是:
var regex=/\s*(\w+)/;
var s="abc def ";
var m1=regex.exec(s); // -> matches "abc"
var m2=regex.exec(s.substring(3)); // -> matches " def"
但是我擔心如果s非常長,並且s.substring被多次調用,有些實現可能會以多次複製長字符串的效率不佳的方式工作。
你可以把'。{3}'放在正則表達式的開頭。 – Pointy
我假設你知道,在這種情況下,你可以開火'\ w +',然後走每個單獨的比賽?我猜這是減少你的實際情況,儘管... –
如何分析你的代碼?或者看一下JavaScript虛擬機的實現? JavaScript中的字符串是不可變的,所以一個好的實現將爲字符共享空間而不是複製它們。所以是的,'substring'產生一個新的對象,但是不必複製字符數據。你的字符串的長度可能無關緊要。無論如何,爲了確保你在這裏沒有X-Y問題,考慮使用'g'標誌,因爲你可能試圖一遍又一遍地找出單詞,對吧? –