2010-02-12 32 views
6

Có cách viết ngắn hơn không?JavaScript Regex Compile()

var needed = /\$\[\w+\]/mi; 
needed.compile(/\$\[\w+\]/mi); 

Tại sao tôi phải chuyển mẫu trở lại regex khi tôi đã khai báo nó trong dòng đầu tiên ?!

+0

Điều gì làm bạn nghĩ bạn làm? –

+1

Nếu tôi không bao gồm mẫu lại, regex mất khoảng gấp đôi. – JamesBrownIsDead

Trả lời

7

Có hai cách để xác định cụm từ thông dụng trong JavaScript - một cách thông qua một hàm tạo đối tượng và một thông qua một chữ. Các đối tượng có thể được thay đổi trong thời gian chạy, nhưng chữ được biên dịch tại tải của kịch bản, và cung cấp hiệu suất tốt hơn.

var txt=new RegExp(pattern,modifiers); 

hoặc đơn giản hơn:

var txt=/pattern/modifiers; 

Đây là điều tương tự mà cobbai nói. Tóm lại, bạn không phải làm cả hai.

2

từ MDC:

Ký hiệu đen cung cấp biên soạn các biểu thức chính quy khi biểu thức được đánh giá

nên /\$\[\w+\]/mi là một regex biên soạn rồi.