2013-10-09 28 views
-4

以前使用過的正則表達式。什麼是正則表達式匹配被保存到的全局變量名?

/.*/.exec('meow') 

{thingIforgot} [0] == 'MEO'

現在我知道的是,上述表達式返回結果。我特別試圖記住我不能谷歌的變量的名稱。

==============================

while((carry = /{[^%]\/*?\}/.exec(string))){ 
    var _results 
    if(/\{s\d+\}/.exec(carry[0])){ 

    } else 
    if(/\{s\d+\}/.exec(carry[0])){ 

    } else{ 
     throw new Error('MARLFOREMD STRING '+string) 
    } 

我知道我不有分配該表達式=/

+0

我一直在尋找那個變量存在15分鐘的名稱和它alows你不必使您的if語句分配和使用的三元語句具有reg ex測試 – Prospero

+0

這是相當不清楚你問什麼,或者會有什麼預期的答案。如果您正在尋找相關的正則表達式的全局變量(如Perl的'$&','$''等),JavaScript沒有等價物。 ['.exec()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec)返回匹配集合,您需要存儲你自己的變量。或者,你是否想知道如何修改模式來創建預期的匹配?目前,它將匹配整個字符串,而不僅僅是「meo」。 –

+0

在JavaScript中有一個變量,它包含對先前執行的正則表達式的結果的反引用。我試圖回想起參考文獻的名稱,令人驚訝的是它不在MDN中。我相信有些人認爲它是可憐的形式。 – Prospero

回答

0

我相信你可能會尋找一些棄用Firefox的功能:

壁虎8.0筆記(火狐8.0/8.0的Thunderbird/SeaMonkey的2.5)

在Gecko 8.0(Firefox 8.0/Thunderbird 8.0/SeaMonkey 2.5)之前,exec() 被錯誤地實現;當它不帶參數調用時,它將與前一個輸入(RegExp.input 屬性)的值匹配,而不是針對字符串「undefined」。這是固定的; 現在/undefined/.exec()正確導致['undefined'],而不是 出現錯誤。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec#Calling_exec()_with_no_parameters_in_old_Gecko_versions

+0

哇,不過那是很整潔的知道 – Prospero

0

不像一些其他的語言,especially Perl,使用Javascript /的ECMAScript沒有與正則表達式匹配相關的全局變量。

有關以前匹配的信息存儲僅在返回值/收集和性能on the RegExp itself

var pattern = /./g; 
var found = pattern.exec('a'); 

console.log(found[0], found.index, pattern.lastIndex); // "a", 0, 1 

雖然,注意lastIndex纔會增加爲「全球RegExp

var pattern = /{[^%]\/*?\}/g; 
//      ^

while((carry = pattern.exec(string))){ 
    // ... 
} 

您可以看到.exec()的所有內容in the spec