2011-12-17 17 views
7

Najwyraźniej powrotem w Firefoksie 3.6, dodaje było uzasadnione:Wyrażenia regularne javascript jako funkcje?

/[0-9]{3}/('23 2 34 678 9 09') 

a wynik był '678'.

FF8 nie ma żadnych. Jaka jest teraz właściwa składnia?

+0

Jaki był wynik? – Michas

+0

To naprawdę zależy od tego, co chcesz zrobić ... są 'test' i' exec', a łańcuchy mają 'match',' split' (i 'search'?). Proponuję: [dokumentację RegExp, na MDN] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp). – Kobi

+0

Wierzcie lub nie, wewnętrzne testy jednostkowe HtmlUnit mają ten kod, a pożądanym wynikiem jest dopasowany ciąg znaków, jeśli taki istnieje. – bmargulies

Odpowiedz

6

Chcesz

/[0-9]{3}/.test('23 2 34 678 9 09'); 

lub

/[0-9]{3}/.exec('23 2 34 678 9 09'); 
3

nie wiem dlaczego trzeba tę składnię, ale tutaj coś dla lulz:

RegExp = (function(){ 
    var old = RegExp; 
    return function(){ 
     return old.prototype.exec.bind(old.apply(this, arguments)); 
    }; 
})() 

Następnie:

new RegExp("[0-9]{3}")('23 2 34 678 9 09') 
//["678"] 

Zauważ, że włamał konstruktor nie zostanie wywołana przy użyciu literały więc działa tylko podczas korzystania new RegExp; P

Powiązane problemy