如何使用string.prototype.matchall polyfill?

时间:2019-09-19 03:12:23

标签: javascript shim

我也希望String.prototype.matchAll()方法也可以在边缘浏览器中使用。因此想到使用the "string.prototype.matchall" npmjs package

我已经安装了此软件包,并且已将其导入到我的main.js文件中

import 'string.prototype.matchall';

我必须在其他文件Input.js.中使用此方法,所以我像下面这样使用

const matchAll = require('string.prototype.matchall');

在我实际上匹配字符串的方法中,下面是

replace = (original_string) => {
  const regex_pattern = /\\d+@*)]/g;
  const matchAll = require('string.prototype.matchall'); 
  const matches = original_string.matchAll(regex_pattern);
  return matches;
}

matchAll变量未使用。如何使用此 string.prototype.matchall polyfill 。有人可以帮我吗?谢谢。

3 个答案:

答案 0 :(得分:1)

由于该包实现了es-shim API,因此您应该调用shim()方法...

  

require('foo').shimrequire('foo/shim')是一个函数,调用该函数将调用getPolyfill,如果polyfill与内置值不匹配,则会将其安装到全局环境中

这将使您可以使用String.prototype.matchAll()

const matchAll = require('string.prototype.matchall')
matchAll.shim()

const matches = original_string.matchAll(regex_pattern)

否则,您可以独立使用

  

require('foo')是符合规范的JS或本机函数。但是,如果函数的行为取决于接收者(“ this”值),则该函数的第一个参数将用作该接收者。程序包应在自述文件中指明情况是否如此

const matchAll = require('string.prototype.matchall')

const matches = matchAll(original_string, regex_pattern)

要使用ES6模块导入,您可以在脚本顶部使用类似的命令(在replace函数中

import shim from 'string.prototype.matchall/shim'
shim()

答案 1 :(得分:1)

我用了这个,对我有用。遍历全局标记模式的匹配就可以了。如果您有任何问题,请告诉我,我们将很乐意为您提供帮助。

function matchAll(pattern,haystack){
    var regex = new RegExp(pattern,"g")
    var matches = [];
    
    var match_result = haystack.match(regex);
    
    for (let index in match_result){
        var item = match_result[index];
        matches[index] = item.match(new RegExp(pattern)); 
    }
    return matches;
}

答案 2 :(得分:1)

您也可以使用 exec RegExp 方法。

t