2010-09-15 34 views
7

Vấn đềLàm thế nào để kết thúc một biểu thức chính quy với một dấu gạch chéo trong Javascript

tôi đang cố gắng để phù hợp với phần hash của một URL sử dụng Javascript. Hàm băm sẽ có định dạng

/#\/(.*)\// 

Điều này rất dễ sử dụng phương pháp mới RegExp() để tạo biểu thức chính quy JS, nhưng tôi không thể tìm ra cách sử dụng định dạng chuẩn, vì hai dấu gạch chéo ở phía trước bắt đầu nhận xét. Có một cách khác để viết điều này mà sẽ không bắt đầu một bình luận?

Ví dụ

// works 
myRegexp = new RegExp ('#\/(.*)\/'); 

// fails 
myRegexp = /#\/(.*)\// 
+0

Trường hợp này không thành công? 're = /#\/(.*)\//;' cung cấp cho tôi '/#\/(.*)\//' trên bàn điều khiển ... – gnarf

+1

bạn đã thử nghiệm điều này để hiển thị nó không thành công? những gì với? điều đó có vẻ giống như một điều ngu ngốc cho một trình phân tích cú pháp. – lincolnk

+0

Điều này thật kỳ quặc. Tôi không thể nhìn thấy những gì tôi đã thay đổi trong mã của tôi, nhưng sao chép mã này trên các công trình tốt. Lỗi của tôi. – lonesomeday

Trả lời

10

Tôi đang cố gắng khớp phần băm của URL bằng Javascript.

Vâng, đừng làm vậy. Có một trình phân tích URL hoàn toàn tốt được tích hợp vào mọi trình duyệt. Đặt href trên một đối tượng vị trí (window.location hoặc một liên kết) và bạn có thể đọc phần URL/ghi từ tính hostname, pathname, search, hash, vv

var a= document.createElement('a'); 
a.href= 'http://www.example.com/foo#bar#bar'; 
alert(a.hash); // #bar#bar 

Nếu bạn đang đặt một con đường giống như / - danh sách được phân tách trong băm, tôi khuyên bạn nên theo dõi hash.split('/').

Đối với regex, cả hai phiên bản đều hoạt động giống nhau đối với tôi. Đường nhỏ // không gây ra nhận xét. Nếu bạn chỉ muốn xoa dịu một số cú pháp làm nổi bật cú pháp, bạn có thể có khả năng thoát khỏi số / đến \x2F.

+0

Ồ, hay - tôi sẽ sử dụng nó. Cảm ơn! – lonesomeday

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