2011-12-17 32 views
7

Rõ ràng, trở lại trong Firefox 3.6, sau đây là hợp pháp:javascript biểu thức chính quy làm chức năng?

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

và kết quả là '678'.

FF8 không có bất kỳ. Cú pháp đúng là gì bây giờ?

+0

kết quả là gì? – Michas

+0

Điều này thực sự phụ thuộc vào những gì bạn muốn làm ... có 'test' và' exec', và chuỗi có 'match',' split' (và 'search'?). Tôi đề xuất: [Tài liệu RegExp, trên MDN] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp). – Kobi

+0

Tin tưởng rằng nó hay không, các xét nghiệm đơn vị nội bộ của HtmlUnit có mã này, và kết quả mong muốn là chuỗi phù hợp nếu có. – bmargulies

Trả lời

6

Bạn có muốn

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

hoặc

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

Tôi không biết lý do tại sao bạn sẽ cần cú pháp đó, nhưng đây là một cái gì đó cho lulz:

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

Sau đó:

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

Lưu ý rằng các nhà xây dựng hack sẽ không được áp dụng khi sử dụng literals vì vậy nó chỉ hoạt động khi sử dụng new RegExp; P

Các vấn đề liên quan