Chào mọi người,
Hiện em đang tìm cách viết một regex để validate một phân tử html. Với các yêu cầu là:
- Tên bắt đầu và kết thúc của một tag phải giống nhau. Vd:
<h1>hello world</h1>
- Tên tag chỉ chứa các kí tự
[A-Z][a-z][0-9]_
- Các tag có thể lồng nhau nhưng nếu giống như này:
<h1><a>contents</a>invalid</h1>
thì sẽ không hợp lệ. - Nội dung trong tag không được chứa chuỗi thoã mãn regex
/<\/?\w+>/
Một số ví dụ:
<h1>Nayeem loves counseling</h1> (valid)
<h1><h1>Sanjay has no watch</h1></h1> (valid)
<h1><h1>Sanjay has no watch</h1>adwdwdw</h1> (invalid)
<par erf>So wait for a while</par erf> (invalid)
<Amee>safat codes like a ninja</amee> (invalid)
<SApremium>Imtiaz has a secret <> crush</SApremium> (valid)
<SApremium>Imtiaz has a secret </te> crush</SApremium> (invalid)
<SApremium>Imtiaz has a secret <h2> crush</SApremium> (invalid)
Em đã cố thực hiện regex trên nhưng hiện tại vẩn chưa nghĩ ra được. Hiện tại, em chỉ mới viết được dạng chung cho regex trên: <(\w+)>([^<>]+)<\/\1>
. Nó chỉ mới thoã mãn được 2 yêu cầu đầu đề ra!
Với yêu cầu thứ tư thì em có viết ra được một regex để validate chuỗi không chứa /<\/?\w+>/
đấy là: ^(?!.*<\/?\w+>).*$
. Nhưng em chưa tìm ra cách để kết hợp với chúng lại???
Xin mọi người góp ý và giúp đỡ ạ!!!