String.search() 用正则查找子串位置

最后更新:2026-10-13

String.search() 用正则查找子串位置

search 用正则表达式查找第一个匹配,返回其起始下标;找不到返回 -1。注意它不支持全局标志 g——只返回首个匹配的位置,需要所有匹配请用 matchAll。

分类字符串
ES 版本ES3(1999)

📝 语法

字符串.search(正则表达式);

⚙️ 参数

regexp正则表达式;传字符串会被自动转成正则。

返回值:第一个匹配的起始下标;找不到返回 -1。

是否修改原值:否(返回新值)

▶ 示例

编辑下方代码,点击运行,在输出面板查看结果:

运行结果:

20
0
-1
20
ℹ️ info 只返回位置、不返回匹配内容——需要匹配结果请用 match 或 exec。
⚠️ 警告 g 标志对 search 无效(规范如此),这与 match 的行为不同,容易踩坑。

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
String.search() ✓ v1 ✓ v12 ✓ v1 ✓ v1 ✓ v4
所有现代浏览器均支持
更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Qsearch 和 indexOf 的区别?
Asearch 接受正则且可忽略大小写;indexOf 只接受普通字符串但性能更好。
Q为什么 search(/x/g) 和 search(/x/) 结果一样?
A规范规定 search 忽略 g 标志,永远返回第一个匹配的位置。要全部匹配用 matchAll。
Q怎么拿到匹配到的文本?
Asearch 不给匹配内容,改用 str.match(/\d/) 或 /\d/.exec(str)。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏