Tối nay tôi đã tìm thấy biểu thức chính quy cuối cùng để lấy các thẻ HTML ra khỏi chuỗi. Nó được viết cách đây một năm bởi Phil Haack trên blog của anh ấy. Regex của anh ấy khá chống đạn. nó có thể phân tích cú pháp các thẻ HTML được viết trên nhiều dòng chứa bất kỳ loại thuộc tính nào [có hoặc không có giá trị, có dấu ngoặc đơn hoặc dấu ngoặc kép]
Thật không may, biểu thức chính quy của anh ấy được thiết kế cho Microsoft. NET , vì vậy tôi đã dành chút thời gian để chuyển đổi nó sang PHP. Đây là kết quả
Thuộc tính
input:invalid {
border: red solid 3px;
}
0 chỉ định một biểu thức chính quy mà giá trị của điều khiển biểu mẫu phải khớp. Nếu một giá trị không phải ______21 không tuân theo các ràng buộc được đặt bởi giá trị input:invalid {
border: red solid 3px;
}
0, thì thuộc tính input:invalid {
border: red solid 3px;
}
4 chỉ đọc của đối tượng input:invalid {
border: red solid 3px;
}
3 sẽ là trueThuộc tính
input:invalid {
border: red solid 3px;
}
0 là một thuộc tính của văn bản, điện thoại, email, url, mật khẩu và các loại đầu vào tìm kiếmThuộc tính
input:invalid {
border: red solid 3px;
}
0, khi được chỉ định, là một biểu thức chính quy mà đầu vào phải khớp để giá trị vượt qua xác thực ràng buộc. Nó phải là một biểu thức chính quy JavaScript hợp lệ, như được sử dụng bởi loại input:invalid {
border: red solid 3px;
}
2 và như được ghi lại trong hướng dẫn của chúng tôi về các biểu thức chính quy; . Không được chỉ định dấu gạch chéo lên xung quanh văn bản mẫuNếu mẫu đã chỉ định không được chỉ định hoặc không hợp lệ, thì không có biểu thức chính quy nào được áp dụng và thuộc tính này bị bỏ qua
Ghi chú. Sử dụng thuộc tính để chỉ định văn bản mà hầu hết các trình duyệt sẽ hiển thị dưới dạng chú giải công cụ để giải thích những yêu cầu để khớp với mẫu. Bạn không được chỉ dựa vào chú giải công cụ để giải thích. Xem bên dưới để biết thêm thông tin về khả năng sử dụng
Một số loại đầu vào hỗ trợ thuộc tính mẫu, đáng chú ý là các loại đầu vào email và url, có các cú pháp giá trị dự kiến phải khớp. Nếu thuộc tính mẫu không xuất hiện và giá trị không khớp với cú pháp dự kiến cho loại giá trị đó, thì thuộc tính chỉ đọc
input:invalid {
border: red solid 3px;
}
6 của đối tượng input:invalid {
border: red solid 3px;
}
3 sẽ là trueKhi bao gồm một
input:invalid {
border: red solid 3px;
}
0, hãy cung cấp mô tả về mẫu bằng văn bản hiển thị gần điều khiển. Ngoài ra, hãy bao gồm thuộc tính input:invalid {
border: red solid 3px;
}
4 cung cấp mô tả về mẫu. Tác nhân người dùng có thể sử dụng nội dung tiêu đề trong quá trình xác thực ràng buộc để cho người dùng biết rằng mẫu không khớp. Một số trình duyệt hiển thị chú giải công cụ với nội dung tiêu đề, cải thiện khả năng sử dụng cho người dùng bị cận thị. Ngoài ra, công nghệ hỗ trợ có thể đọc to tiêu đề khi điều khiển đạt được tiêu điểm, nhưng điều này không nên dựa vào khả năng truy cậpNếu giá trị của đầu vào không phải là chuỗi rỗng và giá trị không khớp với toàn bộ biểu thức chính quy, thì có một vi phạm ràng buộc được báo cáo bởi thuộc tính
input:invalid {
border: red solid 3px;
}
4 của đối tượng input:invalid {
border: red solid 3px;
}
3 là
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
1. Biểu thức chính quy của mẫu, khi khớp với giá trị, phải có phần đầu của nó được neo vào đầu chuỗi và phần cuối của nó được neo vào cuối chuỗi, điều này hơi khác so với các biểu thức chính quy của JavaScript. trong trường hợp thuộc tính mẫu, chúng tôi so khớp với toàn bộ giá trị, không chỉ bất kỳ tập hợp con nào, như thể một
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
2 được ngụ ý ở đầu mẫu và
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
3 ở cuốiĐưa ra những điều sau đây
Enter your phone number in the format [123] - 456 - 7890 [] -
-
Ở đây, chúng tôi có 3 phần dành cho số điện thoại ở Bắc Mỹ với nhãn ngầm định bao gồm cả ba thành phần của số điện thoại, bao gồm 3 chữ số, 3 chữ số và 4 chữ số tương ứng, như được xác định bởi thuộc tính
input:invalid {
border: red solid 3px;
}
0 được đặt trên mỗiNếu các giá trị quá dài hoặc quá ngắn hoặc chứa các ký tự không phải là chữ số, thì patternMismatch sẽ là true. Khi
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
1, phần tử khớp với lớp giả CSS
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
6input:invalid {
border: red solid 3px;
}
Nếu chúng ta đã sử dụng các thuộc tính
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
7 và
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
8 thay vào đó, chúng ta có thể thấy
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
9 hoặc input:invalid {
border: red solid 3px;
}
40 là đúngBạn có thể sử dụng thuộc tính để chỉ định một biểu thức chính quy mà giá trị đã nhập phải khớp để được coi là hợp lệ [xem khóa học cấp tốc đơn giản về cách sử dụng biểu thức chính quy để xác thực đầu vào]
Ví dụ bên dưới giới hạn giá trị ở 4-8 ký tự và yêu cầu giá trị đó chỉ chứa các chữ cái viết thường
Choose a username:
Usernames must be lowercase and 4-8 characters in length.
Submit
input:invalid {
border: red solid 3px;
}
4Điều này ám chỉ như vậy
Khi một điều khiển có thuộc tính
input:invalid {
border: red solid 3px;
}
0, thuộc tính input:invalid {
border: red solid 3px;
}
4, nếu được sử dụng, phải mô tả mẫu. Việc dựa vào thuộc tính input:invalid {
border: red solid 3px;
}
4 để hiển thị trực quan nội dung văn bản thường không được khuyến khích vì nhiều tác nhân người dùng không hiển thị thuộc tính theo cách có thể truy cập được. Một số trình duyệt hiển thị chú giải công cụ khi một phần tử có tiêu đề được di chuột, nhưng điều đó loại bỏ người dùng chỉ sử dụng bàn phím và chỉ cảm ứng. Đây là một trong nhiều lý do bạn phải bao gồm thông tin thông báo cho người dùng cách điền vào điều khiển để phù hợp với yêu cầuMặc dù một số trình duyệt sử dụng
input:invalid {
border: red solid 3px;
}
4 để điền vào thông báo lỗi, nhưng vì trình duyệt đôi khi cũng hiển thị tiêu đề dưới dạng văn bản khi di chuột, do đó, tiêu đề sẽ hiển thị trong các trường hợp không có lỗi, vì vậy hãy cẩn thận để không đặt tiêu đề từ như thể đã xảy ra lỗi