Hướng dẫn check if string contains html tags javascript - kiểm tra xem chuỗi có chứa các thẻ html javascript không

136

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một chuỗi nhất định mà tôi muốn kiểm tra xem đó có phải là HTML hay không. Tôi đang sử dụng Regex cho cùng nhưng không nhận được kết quả thích hợp.

Tôi đã xác nhận regex của tôi và nó hoạt động tốt ở đây.

var htmlRegex = new RegExp["]*>[.*?]"];
return htmlRegex.test[testString];

Đây là fiddle nhưng regex không chạy trong đó. //jsfiddle.net/wfwtc/

Trên máy của tôi, mã chạy tốt nhưng tôi hiểu sai thay vì đúng như kết quả. Thiếu gì ở đây?

hỏi ngày 17 tháng 3 năm 2013 lúc 8:23Mar 17, 2013 at 8:23

user1240679user1240679user1240679

6.55917 Huy hiệu vàng57 Huy hiệu bạc85 Huy hiệu Đồng17 gold badges57 silver badges85 bronze badges

9

Một regex tốt hơn để sử dụng để kiểm tra xem một chuỗi là html là:

/^/

Ví dụ:

/^/.test[''] // true
/^/.test['foo bar baz'] //true
/^/.test['

fizz buzz

'] //true

Trên thực tế, nó rất tốt, nó sẽ trả lại

//i.test[]
0 cho mỗi chuỗi được truyền cho nó, đó là do mỗi chuỗi là HTML. Nghiêm túc mà nói, ngay cả khi nó được định dạng kém hoặc không hợp lệ, nó vẫn là HTML.every string is HTML. Seriously, even if it's poorly formatted or invalid, it's still HTML.

Nếu những gì bạn đang tìm kiếm là sự hiện diện của các phần tử HTML, thay vì chỉ đơn giản là bất kỳ nội dung văn bản nào, bạn có thể sử dụng một cái gì đó dọc theo các dòng của:

//i.test[]

Nó sẽ không giúp bạn phân tích HTML theo bất kỳ cách nào, nhưng nó chắc chắn sẽ gắn cờ chuỗi là chứa các phần tử HTML.

Derpynerd

4.5386 Huy hiệu vàng37 Huy hiệu bạc88 Huy hiệu Đồng6 gold badges37 silver badges88 bronze badges

Đã trả lời ngày 17 tháng 3 năm 2013 lúc 8:43Mar 17, 2013 at 8:43

19

Phương pháp số 1. Dưới đây là chức năng đơn giản để kiểm tra nếu chuỗi chứa dữ liệu HTML:. Here is the simple function to test if the string contains HTML data:

function isHTML[str] {
  var a = document.createElement['div'];
  a.innerHTML = str;

  for [var c = a.childNodes, i = c.length; i--; ] {
    if [c[i].nodeType == 1] return true; 
  }

  return false;
}

Ý tưởng là cho phép trình phân tích cú pháp DOM của trình duyệt quyết định xem chuỗi được cung cấp có trông giống như HTML hay không. Như bạn có thể thấy nó chỉ cần kiểm tra

//i.test[]
1 [
//i.test[]
2 của 1].

Tôi đã thực hiện một vài bài kiểm tra và có vẻ như nó hoạt động:

isHTML['this is a string'] // true
isHTML['this is a string']        // false
isHTML['this is a string'] // true

Giải pháp này sẽ phát hiện đúng chuỗi HTML, tuy nhiên nó có tác dụng phụ mà img/vide/vv. Tags sẽ bắt đầu tải xuống tài nguyên sau khi được phân tích cú pháp trong bên trong.

Phương pháp #2. Một phương pháp khác sử dụng Domparser và không có tác dụng phụ tài nguyên tải:. Another method uses DOMParser and doesn't have loading resources side effects:

function isHTML[str] {
  var doc = new DOMParser[].parseFromString[str, "text/html"];
  return Array.from[doc.body.childNodes].some[node => node.nodeType === 1];
}

Ghi chú: 1.

//i.test[]
3 là phương pháp ES2015, có thể được thay thế bằng ________ 34.2. Hàm mũi tên trong cuộc gọi
//i.test[]
5 có thể được thay thế bằng hàm ẩn danh thông thường.
1.
//i.test[]
3 is ES2015 method, can be replaced with
//i.test[]
4.
2. Arrow function in
//i.test[]
5 call can be replaced with usual anonymous function.

Đã trả lời ngày 17 tháng 3 năm 2013 lúc 8:40Mar 17, 2013 at 8:40

DFSQDFSQdfsq

189K25 Huy hiệu vàng232 Huy hiệu bạc252 Huy hiệu Đồng25 gold badges232 silver badges252 bronze badges

10

Một chút xác nhận với:

/|br|hr|input|!--|wbr][a-z]+.*?>|]/i]; It will basically return true for strings containing a < followed by ANYTHING followed by > .

Làm thế nào để bạn kiểm tra xem một chuỗi là HTML hay không sử dụng JavaScript?

Nhiệm vụ là xác thực liệu chuỗi đã cho có hợp lệ HTML hay không sử dụng JavaScript ...
Nhận chuỗi HTML thành một biến ..
Tạo một regexp kiểm tra xác thực ..
RegEXP nên tuân theo các quy tắc tạo tài liệu HTML ..

Chuỗi HTML là gì?

Không giống như hầu hết các trình phân tích cú pháp HTML tạo ra các cấu trúc cây, HTMLString tạo ra một chuỗi các ký tự với bộ thẻ riêng.Cấu trúc phẳng này giúp dễ dàng điều khiển các phạm vi [ví dụ - văn bản được chọn bởi người dùng] vì mỗi ký tự độc lập và không dựa vào cấu trúc thẻ phân cấp.generates a string of characters each with its own set of tags. This flat structure makes it easy to manipulate ranges [for example - text selected by a user] as each character is independent and doesn't rely on a hierarchical tag structure.

Làm thế nào bạn sẽ kiểm tra HTML có hợp lệ hay không và cũng mã hóa nó?

Trình xác thực đánh dấu W3C: Điều này xem xét [x] HTML Doctype mà bạn đang sử dụng cho tài liệu bạn cung cấp để kiểm tra, sau đó kiểm tra đánh dấu của bạn cho phù hợp.Đây là cái chúng tôi đề xuất nếu bạn đang sử dụng HTML4 hoặc XHTML1.x doctype.Nó xác nhận HTML5, nhưng Trình xác nhận.NU được cho là cập nhật hơn.: This looks at the [X]HTML doctype you are using for the document you give it to check, and then checks your markup accordingly. This is the one we recommend if you are using an HTML4 or XHTML1. x doctype. It does validate HTML5, but validator.nu is arguably more up to date.

Chủ Đề