【问题标题】:Regex in javascript check string [duplicate]javascript检查字符串中的正则表达式[重复]
【发布时间】:2021-11-01 17:38:36
【问题描述】:

我想检查字符串是否包含html:

const containsHTML = (str) => /<[a-z][\s\S]*>/i.test(str);
console.log(containsHTML('<br>s')) // expect false

在我的情况下,我希望false,因为s 没有用 HTML 标签包裹。如何修复代码?

【问题讨论】:

  • 你的 reg exp 匹配 br 标签并说没问题。没有说明整行需要匹配。
  • HTML 支持纯文本节点...不明白为什么你认为s&lt;br&gt; 之后是不允许的?
  • @epascarello,那么如何避免字符串未包含在 html 中的情况,您能帮忙吗?在上述情况下,我需要弄错
  • 取决于它的用途。如果您要确保该人在执行myContainer.innerHTML = stringFromUser 之类的操作之前没有添加 html,那么大多数浏览器无论如何都会添加缺少的结束标签,因此只需一个开始标签就足以“获取 html”。

标签: javascript


【解决方案1】:

你可以试试这个:/&lt;([a-z]+.*)&gt;.*&lt;\/\1&gt;/i

const containsHTML = (str) => /<([a-z]+.*)>.*<\/\1>/i.test(str)

console.log(containsHTML('<br>s'))    // expect false
console.log(containsHTML('<p>s</p>')) // expect true

【讨论】:

  • 如果我设置了console.log(containsHTML('&lt;br/&gt;')) // expect true,但我得到了错误。为什么?
  • 我通过在预期的结束标签中重用开放标签组来修复你的表达方式。
  • @Asking 因为上面的正则表达式只检查周围的开闭标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 2017-07-06
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多