Mình muốn viết regex lọc ra những chỗ in đậm của các dòng sau đây:
/
**/**login
**/**profile
**/en/**abc
**/de/**xyz
/vi
/en
/de
Mình mới viết được tới /(\w{2}/)? nhưng chưa biết cách để chọn dòng /vi và /en. Các bác giúp mình với, mình dùng trang http://rubular.com/ để thử.
Regex lọc ra phần đầu của path trong JavaScript
Sao in đậm không được vậy ta 
Muốn thế này phải không?
^\/(([a-z]{2})([\-_][a-zA-Z]{2})?)(\/\w*)?$
Kiểm thử:
Nhóm khớp:
Match 1
1.	en
2.	en
3.	 
4.	/abc
Match 2
1.	de
2.	de
3.	 
4.	/xyz
Match 3
1.	vi_VN
2.	vi
3.	_VN
4.	 
Match 4
1.	vi_VN
2.	vi
3.	_VN
4.	/logout
Match 5
1.	vi
2.	vi
3.	 
4.	 
Match 6
1.	en
2.	en
3.	 
4.	 
Match 7
1.	de
2.	de
3.	 
4.	 
Match 8
1.	en-US
2.	en
3.	-US
4.	 
Match 9
1.	vi-VN
2.	vi
3.	-VN
4.	/profile
- Chỉ có 2 dòng đầu không khớp. Vì không có mã ngôn ngữ.
- Cách viết mã ngôn ngữ và mã quốc gia cách nhau bằng - hoặc _ nên mình viết cho cả 2 trường hợp
- Theo kết quả các nhóm thì có thể lấy nhóm:
- Mã ngôn ngữ và mã quốc gia.
- Chỉ mã ngôn ngữ.
- Chỉ mã quốc gia (nếu có).
- Đường dẫn nối tiếp.
           
           
           1 Like
         
         /login và /profile đều match dấu / nữa bạn ơi
Mình cũng không cần lấy nhóm, mình chỉ cần match để xóa đoạn đầu đi thôi
Vậy làm hiểu lầm rồi 
^\/[a-z]{2}([\-_][A-Z]{2})?$|\/([a-z]{2}([\-_][A-Z]{2})?\/)?
Kết quả:
Thay vì kiếm nó xóa để lấy đoạn sau, sao không dùng regex lấy luôn đoạn sau có phải tiện hơn không?
           
           
           5 Likes
         
         Bác nói đúng. Thay vì dùng replace để xóa thì match thẳng đoạn sau nó nhanh hơn
Cái link web mình nó chỉ bắt đầu bằng 2 kí tự thôi vd như /en/abc hoặc /en chứ ko có phần -VN nhưng cách tổng quát của bác rất hay. Thank bác ^^
 
      
     83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?
    83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?