javascript - 为什么正则表达式匹配的字符串表现得很奇怪?

标签 javascript regex

我有一段代码如下所示:

    let regex = /^[^aeiou]+(?=[aeiou])/;
    let regexStr = "hhhhello".match(regex);
    console.log(regexStr.length); // prints 1

它不应该打印4吗?但是,如果我向 regexStr 添加“”,它会显示正确的值。

    let regex = /^[^aeiou]+(?=[aeiou])/;
    let regexStr = "hhhhello".match(regex) + "";
    console.log(regexStr.length); // prints 4

有人可以解释一下发生了什么吗?

最佳答案

在您的示例中,regexStr 是一个包含一个元素的数组,即字符串hhhh。通过添加一个字符串,您可以隐式转换为字符串,该字符串的长度为 4。您可以只使用 regexStr[0].length

关于javascript - 为什么正则表达式匹配的字符串表现得很奇怪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60683706/

相关文章:

javascript - HTML5 视频不会使用 Angular 在 Chrome 67 中自动播放(即使静音)

javascript - 如何在 Node.js 上使用 co 模块捕获异常?

javascript - 从外部 URL 获取 URL 标题,无需加载整个网站

java - 在 JAVA 中验证 CSV 的正则表达式

javascript - 如何计算 jQuery 中每个循环的总时间?

javascript - 使用 AJAX(无需 jQuery)从 Vimeo channel 获取视频

javascript - 在javascript中动态更改字段id

javascript - V8 会自动缓存编译后的正则表达式吗?

php - Doctrine Extensions REGEXP 在 Symfony2 中不起作用

javascript - 将字符串更改为数字并总结数字