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 的行为不同,容易踩坑。
🌐 浏览器支持
| 浏览器 | |||||
|---|---|---|---|---|---|
| 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)。