Sau đây regexjavascript regex gia hạn hợp/giải nén tập tin
var patt1=/[0-9a-z]+$/i;
chiết xuất phần mở rộng tập tin của chuỗi như
filename-jpg
filename#gif
filename.png
Làm thế nào để sửa đổi biểu thức chính quy này để chỉ trả lại một phần mở rộng khi chuỗi thực sự tên tệp có dấu chấm là dấu phân tách là gì? (Rõ ràng tên tệp # gif không phải là tên tệp thông thường)
CẬP NHẬT Dựa trên nhận xét của tvanofsson Tôi muốn làm rõ rằng khi hàm JS nhận chuỗi, chuỗi sẽ chứa tên tệp mà không có dấu chấm và đặc biệt khác ký tự (nó sẽ thực sự được xử lý một slug
). Vấn đề không phải là phân tích cú pháp tên tập tin mà trong phân tích cú pháp không chính xác - hàm trả về phần mở rộng của "jpg" khi nó được đưa ra "filename-jpg" khi nó thực sự trả về null
hoặc chuỗi rỗng và hành vi này cần thiết sửa chữa.
Regex có phải xác định xem tên tệp có phải là tên tệp hợp pháp không? Điều gì định nghĩa tên tệp hợp pháp? Điều gì định nghĩa một phần mở rộng tên tập tin pháp lý? Ví dụ, là 'foo bar.zi_' tên tệp hợp pháp? Làm thế nào về 'foo.bar.zi_'? – tvanfosson
Tên tệp hệ điều hành điển hình..ví dụ của bạn với không gian trong nó không thể xảy ra trong hệ thống của chúng tôi và câu trả lời được cung cấp bởi @stema dường như hoạt động với các phần mở rộng đôi nên nó đủ tốt cho tôi. – mare
Cả hai ví dụ đều là tên tệp hợp pháp trong Unix và Windows. Câu hỏi của bạn có thể được cải thiện bằng cách nêu chi tiết chính xác những gì bạn cho là tên tệp hợp pháp. Nó sẽ làm cho câu trả lời, đặc biệt. câu trả lời được chấp nhận có ý nghĩa hơn đối với người đọc trong tương lai, những người có thể đang tìm cách giải quyết cùng một vấn đề hoặc tương tự. – tvanfosson