【问题标题】:javascript match get all class names with numbers in themjavascript匹配获取所有带有数字的类名
【发布时间】:2020-04-30 22:39:07
【问题描述】:

我正在尝试获取其中包含数字的 body 标签的类,但被正则表达式卡住了

<body class='UjQWin PEfnhb s21aSi'>

var matches = document.body.className.match(/[0-9]+/);
if (matches) {
    id = matches;
    //document.getElementById("num").innerHTML = id;
  console.log(id) //expected output s21aSi 
}

在这种情况下是否可以得到 s21aSi 的输出?

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    您可以从.classList 属性创建一个数组并过滤该数组,这是一个示例:

    const result = [...document.body.classList].filter(cl => /\d/.test(cl));
    console.log(result);
    &lt;body class='UjQWin PEfnhb s21aSi'&gt;

    【讨论】:

    • 嗨,Titus,我的建议基本相同,对吧?还是我的解决方案有任何严重缺陷?为什么它被否决了?
    • @WiktorStribiżew 是的,它们具有相同的效果,我看不出有任何缺陷,因为空格不是有效的类名字符,所以在空格上分割是安全的。当人们投反对票并且他们没有发表评论并解释时令人沮丧。
    【解决方案2】:

    您可以使用空格 (.split(/\s+/)) 拆分并使用 /\d/(数字匹配)模式进行过滤:

    var matches = document.body.className.split(/\s+/).filter(m => /\d/.test(m));
    console.log(matches)
    &lt;body class='UjQWin PEfnhb s21aSi'&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多