2009-11-08 14 views
25

Có cách nào để chuyển một biến vào một regex trong jQuery/Javascript không?Làm thế nào để chuyển một biến vào regex trong jQuery/Javascript

Tôi muốn làm điều gì đó như:

var variable_regex = "bar"; 
var some_string = "foobar"; 

some_string.match(/variable_regex/); 

Trong Ruby bạn sẽ có thể làm:

some_string.match(/#{variable_regex}/)

Tìm thấy một bài hữu ích:

How can I concatenate regex literals in JavaScript?

+0

Sao chép [Bạn sử dụng biến trong biểu thức chính quy như thế nào?] (Https://stackoverflow.com/questions/494035/how- do-you-use-a-variable-in-a-regular-expression) –

Trả lời

17

Thật dễ dàng:

var variable_regex = "bar"; 
var some_string = "foobar"; 

some_string.match(variable_regex); 

Chỉ mất //. Nếu bạn muốn sử dụng các regex phức tạp, bạn có thể sử dụng nối chuỗi:

var variable_regex = "b."; 
var some_string = "foobar"; 

alert (some_string.match("f.*"+variable_regex)); 
+1

Tôi đã có một regex phức tạp và tôi muốn nội suy một mô hình biến thành một biểu thức hardcoded, nhưng tôi đoán tôi chỉ muốn đặt mỗi hoán vị regex cho một biến toàn bộ. –

+2

Tôi không nghĩ rằng bạn có thể áp dụng các tùy chọn regex với phiên bản này (ví dụ như toàn cầu, không phân biệt chữ hoa chữ thường). Tôi muốn nói câu trả lời của @ Jonathan thích hợp hơn câu trả lời này. – nzifnab

+0

Nó cũng chỉ hoạt động với kết quả phù hợp. Các cuộc gọi khác, như thay thế, yêu cầu xây dựng regex một cách rõ ràng. – bronson

44

Javascript không hỗ trợ interpol ation như Ruby - bạn phải sử dụng các RegExp constructor:

var aString = "foobar"; 
var pattern = "bar"; 

var matches = aString.match(new RegExp(pattern)); 
+6

Trong trường hợp chúng ta muốn áp dụng các tùy chọn regex, chúng ta có thể làm: Regex mới (mẫu, 'gi') cho toàn cục, không phân biệt chữ hoa chữ thường. – Mike

+0

Nhận xét của @Mike cần được sửa. Nó phải là 'mới RegExp (mẫu [, cờ]) 'không chỉ ** Regex ** –

+1

ES2015 hỗ trợ nội suy biểu thức trong chuỗi mẫu. –

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