Tôi đang xây dựng trình xác thực JSON từ đầu, nhưng tôi khá mắc kẹt với phần chuỗi. Hy vọng của tôi đang xây dựng một regex mà sẽ phù hợp với trình tự sau đây được tìm thấy trên JSON.org:Regex để đối sánh một chuỗi JSON
regex của tôi cho đến nay là:
/^\"((?=\\)\\(\"|\/|\\|b|f|n|r|t|u[0-9a-f]{4}))*\"$/
Nó phù hợp với tiêu chí với một dấu chéo ngược sau bởi một ký tự và một chuỗi rỗng. Nhưng tôi không chắc cách sử dụng phần UNICODE.
Có một regex để phù hợp với bất kỳ chuyên gia UNICODE nhân vật "hoặc \ hoặc ký tự kiểm soát? Và nó sẽ phù hợp với một dòng mới hoặc tab ngang?
Câu hỏi cuối cùng là vì regex phù hợp với chuỗi '\ t', nhưng không phải là "" (bốn không gian, nhưng ý tưởng là một tab). Nếu không, tôi sẽ cần phải mở rộng regex với nó, đó không phải là vấn đề, nhưng tôi đoán là tab ngang là một ký tự UNICODE.
Nhờ Jaeger Kor, tôi hiện có regex sau:
/^\"((?=\\)\\(\"|\/|\\|b|f|n|r|t|u[0-9a-f]{4})|[^\\"]*)*\"$/
Có vẻ như chính xác, nhưng có cách nào để kiểm tra các ký tự điều khiển hay không cần thiết khi chúng xuất hiện trên các ký tự không in được trên regular-expressions.info? Dữ liệu nhập để xác thực luôn là văn bản từ vùng văn bản.
Cập nhật: regex là như sau trong trường hợp bất cứ ai cần nó:
/^("(((?=\\)\\(["\\\/bfnrt]|u[0-9a-fA-F]{4}))|[^"\\\0-\x1F\x7F]+)*")$/
Cảm ơn q của bạn phản ứng uick. Tôi thêm nó vào biểu thức chính quy đầu tiên của tôi và nó có vẻ hoạt động tốt. Tôi không biết gì về các nhân vật điều khiển, nhưng có lẽ tôi không cần phải lo lắng về nó vì đầu vào là từ một vùng văn bản nơi họ có thể không được chấp nhận. Regex cuối cùng bạn cung cấp là một regex hoàn chỉnh, nhưng Tôi muốn biết lỗi ở đâu. Nhưng hơn nữa, tôi sẽ kiểm tra xem nó có hữu ích hơn không! – Sietse
Tôi đã chơi với regex mới nhất của bạn và khi tách chúng, chúng hoạt động rất tốt! Cảm ơn! – Sietse
Thx! Url tìm kiếm là: https://regex101.com/library?orderBy=MOST_POINTS&search=json – vbrajon