我也希望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 。有人可以帮我吗?谢谢。
答案 0 :(得分:1)
由于该包实现了es-shim API,因此您应该调用shim()
方法...
require('foo').shim
或require('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