Từ nghiên cứu của tôi, có vẻ như các biểu thức chính quy của Javascript không có bất kỳ tích hợp nào tương đương với công cụ sửa đổi Perl/x, hoặc công cụ sửa đổi RegexOptions.IgnorePatternWhitespace của .NET. Chúng rất hữu ích vì chúng có thể làm cho một regex phức tạp dễ đọc hơn nhiều. Thứ nhất, tôi đã bỏ lỡ một cái gì đó và có một Javascript được xây dựng trong tương đương với những? Thứ hai, nếu không có, không ai biết một plugin jQuery tốt sẽ thực hiện chức năng này? Đó là một sự xấu hổ để có nén regex phức tạp của tôi thành một dòng vì hạn chế regex rõ ràng của Javascript.Bỏ qua khoảng trắng trong các mẫu biểu thức chính quy Javascript?
Trả lời
Nếu tôi hiểu chính xác bạn muốn thêm khoảng trắng không phải là một phần của regexp? Theo như tôi biết nó không thể với regexp chữ.
Ví dụ:
var a = /^[\d]+$/
Bạn có thể phá vỡ các regexp trong một vài dòng như thế này:
var a = RegExp(
"^" +
"[\\d]+" + // This is a comment
"$"
);
Chú ý rằng vì nó bây giờ là một chuỗi bình thường, bạn phải thoát \ với \\
Hoặc nếu bạn có tổ hợp phức tạp:
var digit_8 = "[0-9]{8}";
var alpha_4 = "[A-Za-z]{4}";
var a = RegExp(
digit_8 +
alpha_4 + // Optional comment
digit_8
);
Cập nhật: Sử dụng một mảng tạm thời để nối các biểu thức chính quy:
var digit_8 = "[0-9]{8}";
var alpha_4 = "[A-Za-z]{4}";
var a = RegExp([
digit_8,
alpha_4, // Optional comment
digit_8,
"[0-9A-F]" // Another comment to a string
].join(""));
Vâng, nhưng không giống nhau. Bạn có cú pháp nối chuỗi Javascript thêm xấu xí và bạn vẫn không thể đặt các nhận xét kiểu Perl ở cuối dòng, như: h (a | o) t # <- khớp với mũ hoặc nóng – Jez
@Jez: Nhưng bạn có thể đặt chú thích JavaScript ở đó. Không có cách nào khác, thật không may. JS không hỗ trợ regexes tiết. –
JavaScript không phải là perl. – Incognito
Đáng tiếc là không có tùy chọn như vậy trong ES5, và tôi nghi ngờ nó dường như không bao giờ có trong RegExp
literals, vì họ đã rất khó phân tích cú pháp và ngắt dòng sẽ khiến chúng trở nên mơ hồ hơn.
Nếu bạn muốn dễ dàng thoát và tô sáng cú pháp của RegExp
literals, bạn có thể tham gia bằng cách tận dụng thuộc tính source
. Đó không phải là hoàn hảo, nhưng IMHO ít xấu hơn rơi xuống tất cả các cách trở lại chuỗi:
new RegExp(
/foo/.source +
/[\d+]/.source +
/bar/.source
);
Trong ES6 bạn có thể tạo mẫu của bạn chuỗi riêng:
regexp`
foo
[\d+]
bar
`;
function regexp(parts) {
// I'm ignoring support for ${} placeholders for brevity,
// but full implementation should escape them.
// Note that `.raw` allows use of \d instead of \\d.
return new RegExp(parts.raw.join('').replace(/\s+/g,''));
}
- 1. Làm cách nào để bỏ qua khoảng trống trong chuỗi chủ đề biểu thức chính quy?
- 2. Biểu thức chính quy JavaScript
- 3. Biểu thức chính quy Java để khớp với các ký tự khoảng trắng _all_
- 4. Làm cách nào để bật chế độ biểu thức chính quy không phân biệt khoảng trắng trong PHP?
- 5. Khoảng cách Levenshtein trong biểu thức chính quy
- 6. biểu thức chính quy lookbehind javascript
- 7. Tạo mảng biểu thức chính quy Javascript
- 8. Có biểu thức chính quy JavaScript nào để xóa tất cả khoảng trắng ngoại trừ dòng mới không?
- 9. biểu xpath để loại bỏ khoảng trắng
- 10. lớp Scanner bỏ qua trên khoảng trắng
- 11. Biểu thức chính quy Javascript - chuỗi để đối tượng RegEx
- 12. Các biểu thức chính quy thông thường
- 13. Biểu thức chính quy của Python
- 14. Biểu thức chính quy javascript đơn giản cho số dải
- 15. Biểu thức chính quy Javascript "Ký tự không gian đơn"
- 16. Biểu thức chính quy Javascript - vòng lặp vô hạn exec
- 17. Độ dài tối thiểu Biểu thức chính quy
- 18. Biểu thức chính quy Javascript Xóa không gian
- 19. Biểu thức chính quy Javascript cho giá trị rgb
- 20. javascript biểu thức chính quy làm chức năng?
- 21. Biểu thức chính quy Javascript khớp với hai chuỗi
- 22. Biểu thức chính quy Javascript để xác thực URL
- 23. Biểu thức chính quy Javascript nhiều đối sánh
- 24. Loại bỏ khoảng trắng trong một bảng
- 25. Có biểu thức chính quy tương thích Perl để cắt khoảng trắng từ cả hai mặt của chuỗi không?
- 26. Javascript loại bỏ khoảng trắng khi nó không nên?
- 27. Biểu thức chính quy để tìm các không gian
- 28. Quy tắc biểu thức chính quy trong Outlook 2007?
- 29. Làm sạch các biểu thức chính quy của Python
- 30. Clojure multiline biểu thức chính quy
Tại sao sử dụng jQuery? jQuery không phải là cách duy nhất để nhập mã bên ngoài. –