2011-01-04 39 views
18

Tôi chắc chắn rằng một thứ gì đó khá nhỏ mà tôi thiếu nhưng tôi vẫn chưa thể tìm ra được.Biểu thức chính quy Javascript - chuỗi để đối tượng RegEx

Tôi có một biến JavaScript với mô hình regex trong nó, nhưng tôi không thể dường như có thể để làm cho nó làm việc với các lớp RegEx

sau luôn là false:

var value = "[email protected]"; 
var pattern = "^\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,3}$" 
var re = new RegExp(pattern); 
re.test(value); 

nhưng nếu Tôi thay đổi nó thành một biểu thức chính quy thích hợp (bằng cách loại bỏ các dấu ngoặc kép và thêm / ở đầu và cuối của mẫu), nó bắt đầu hoạt động:

var value = "[email protected]"; 
var pattern = /^\[email protected][a-zA-Z_]+?\.[a-zA-Z]{2,3}$/ 
var re = new RegExp(pattern); 
re.test(value); 

vì tôi luôn nhận được mẫu như một chuỗi trong một biến, tôi đã không thể tìm ra những gì tôi đang thiếu ở đây.

Trả lời

24

backslashes là ký tự đặc biệt trong chuỗi mà cần phải được thoát với dấu chéo ngược khác:

var value = "[email protected]"; 
var pattern = "^\\[email protected][a-zA-Z_]+?\\.[a-zA-Z]{2,3}$" 
var re = new RegExp(pattern); 
re.test(value); 
+0

omg Tôi biết đó là một cái gì đó khá đơn giản mà tôi đã mất tích. Cảm ơn!! – shake

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