JS 正则表达式 [@@search]()

🌙
手机阅读
本文目录结构

[@@search]() 方法执行了一个在给定字符串中的一个搜索以取得匹配正则模式的项。

语法

regexp[Symbol.search](str)

参数

str

搜索的目标 String

返回值

整数

如果成功的话,[@@search]() 返回该正则模式的第一个匹配项的在字符串中的位置索引。否则将返回-1。

描述

这个方法在 String.prototype.search() 的内部调用。例如,下面的两个方法返回相同结果。

'abc'.search(/a/);

/a/[Symbol.search]('abc');

这个方法为自定义 RegExp 子类中的匹配行为而存在。

示例

直接调用

这个方法的使用方式和 String.prototype.search() 相同,不同之处是 this 和参数顺序。

var re = /-/g;
var str = '2016-01-02';
var result = re[Symbol.search](str);
console.log(result);  // 4

在子类中使用@@search

{jsxref(“RegExp”)}} 的子类可以覆写 [@@search]()方法来修改默认行为。

class MyRegExp extends RegExp {
  constructor(str) {
    super(str)
    this.pattern = str;
  }
  [Symbol.search](str) {
    return str.indexOf(this.pattern);
  }
}

var re = new MyRegExp('a+b');
var str = 'ab a+b';
var result = str.search(re); // String.prototype.search calls re[@@search].
console.log(result); // 3

规范

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)RegExp.prototype[@@search] Standard 初始定义
ECMAScript Latest Draft (ECMA-262)RegExp.prototype[@@search] Draft  

另见

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了