You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中\w*无法匹配单词字符:为何/\w*/匹配结果为空?

为什么/\w*/匹配"/assedede"返回空字符串?

这其实是正则里*和+量词的核心区别导致的,咱们一步步拆解:

先搞懂两个量词的差异

  • \w*:表示匹配0个或任意多个单词字符(单词字符包括a-z、A-Z、0-9和下划线_)——划重点,它允许匹配「0个字符」这种情况
  • \w+:表示匹配1个或更多个单词字符——它要求至少匹配1个符合条件的字符,不能是空的

看看两种正则的匹配过程

1. 用/\w*/匹配"/assedede"

正则引擎是从字符串的第一个字符开始逐个检查的:

  • 第一个字符是/,它不属于\w的范畴;
  • 但\w*允许匹配0个字符啊!所以引擎直接在这里就匹配到了「0个字符」,也就是空字符串"",然后就停止匹配了(match方法默认找到第一个匹配结果就返回)。

2. 用/\w+/匹配"/assedede"

同样从第一个字符开始:

  • 第一个字符/不符合\w,引擎不会停,会跳过它继续往后找;
  • 找到第二个字符a,这是单词字符,于是引擎开始持续匹配后面的s、s、e、d、e、d、e,直到字符串结束,最终返回完整的"assedede"。

额外小提示

如果你想用\w*也能匹配到后面的单词字符,可以调整正则的匹配位置,比如用/\w*$/(匹配字符串末尾的0或多个单词字符),这时候"/assedede".match(/\w*$/)就会返回"assedede"啦。

内容的提问来源于stack exchange,提问作者Evergreen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 20:12:51