首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex选择所有缺少子字符串的单词

Regex选择所有缺少子字符串的单词
EN

Stack Overflow用户
提问于 2018-04-13 03:01:20
回答 2查看 291关注 0票数 0

我正在尝试选择缺少特定子字符串的所有行。在这种情况下,任何一行都缺少aria-label属性。

代码语言:javascript
复制
<section class="test-class" aria-label="some text">
<section class="test-class" aria-label="">
<section class="test-class">
<section class="test-class" >
<div class="test-class">

预期结果:

代码语言:javascript
复制
<section class="test-class">
<section class="test-class" >

我读了一些其他的问题和答案,并试图消极地展望未来,但我认为我可能有错误的语法?我试图利用这一点在我的文本编辑器中进行搜索。

到目前为止,这是我的准则/test-class.*?!aria-label/g

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-13 03:08:00

代码语言:javascript
复制
(?!.*aria-label.*)(<.+>)

https://regex101.com/r/i0aacp/13/

<.+>意味着匹配<>之间的一切

负展望意味着< & >、Aaria-label之间的值不是它的一部分。

您的测试人员链接https://regexr.com/3nr4f

票数 1
EN

Stack Overflow用户

发布于 2018-04-13 07:52:34

负前瞻的语法是(?!

假设您的字符串以<开头,以>结尾,则不必验证class="test-class"

要匹配标签,您可以使用\baria-label="[^"]*"

您可以在负前瞻性的(?!中使用它来断言标签不在字符串中出现:

^(?!.*\baria-label="[^"]*").*$

,这将与匹配

  • 从字符串开头开始的^
  • (?!负前瞻性断言了后面的内容
    • .*任何字符0或更多次
    • \baria-label=匹配单词边界和aria-label=
    • "[^"]*"匹配",而不是" 0次或多次,然后是"

  • )关闭负前瞻
  • .*$ (如果该断言没有问题),在字符串结束之前匹配任何字符0或更多次。

代码语言:javascript
复制
const strings = [
  "<section class=\"test-class\" aria-label=\"some text\">",
  "<section class=\"test-class\" aria-label=\"\">",
  "<section class=\"test-class\" testaria-label=\"\">",
  "<section class=\"test-class\">",
  "<section class=\"test-class\" >"
];

let pattern = /^(?!.*\baria-label="[^"]*").*$/;

strings.forEach((s) => {
  console.log(s + " ==> " + pattern.test(s));
});

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49808655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档