【问题标题】:Why is my JavaScript output weird when I am implementing .match regex?为什么在我实现 .match 正则表达式时我的 JavaScript 输出很奇怪?
【发布时间】:2020-11-26 04:11:29
【问题描述】:

所以,我最近在编码时得到了这种输出,但我只是想确保它正常或者我做错了什么。这是一个简单的代码..也许它与正则表达式有关。

我的控制台显示“(1) ['a', index: 1, input: 'karina', groups: undefined]”

function reg(s) {
    reg = /[aeiou]/;
    console.log(s.match(reg));
}
reg("turtle");

【问题讨论】:

  • 你期待什么?
  • 正确的是,它检查字符串是否有任何与您的 aeiou 值和第一个索引匹配的字符,否则将返回 null。
  • 在函数内部重新定义函数几乎永远不会做你想做的事。有趣的是,我故意这样做过一次,但从来没有这样做过。
  • 如果您使用reg("turtle");,然后得到['a', index: 1, input: 'karina',您会遇到问题,但您没有显示正确的代码。
  • .match 在 RegExp 中没有 g 标志会返回第一个匹配的数组,后跟括号中的子模式。

标签: javascript regex


【解决方案1】:

您的代码运行良好。 .match() 方法将比较字符串和您定义的正则表达式,并返回一个数组,其中包含它找到的第一个匹配项以及它发生在什么索引处。

如果您想返回一个包含所有结果但不包含其他信息的数组,您只需在 RegEx 末尾添加一个“g”即可。您的函数应如下所示:

function reg(s) {
    reg = /[aeiou]/g;
    console.log(s.match(reg));
}

reg('turtle');

末尾的“g”将使 .match() 查找并抓取您正在检查的字符串中的所有匹配项,而不仅仅是第一个匹配项。

【讨论】:

  • 您应该将reg('turtle'); 放在您的 sn-p 的末尾,以便 OP 可以看到输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2018-09-09
  • 2014-07-03
  • 1970-01-01
相关资源
最近更新 更多