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ờ?
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ờ?
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');
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
kết quả là gì? – Michas
Đ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
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