当正则表达式分别定义时,我可以得到它的源代码。例如:
let r1 = new RegExp("el*");
console.log(r1.source);
// el*
或者:
let r2 = /el*/;
console.log(r2.source);
// el*
如果正则表达式不是单独定义的,是否有一种提取方法?例如,类似于:
let m = "Hello".match(/el*/);
console.log(m.source?);发布于 2022-02-12 21:54:14
不,
引用match()函数的文档
返回值 数组,其内容取决于全局(g)标志的存在与否,如果没有找到匹配,则为null。
因此返回值是一个数组(可以通过Array.isArray(m)// true进行测试)
但是,返回的数组中有一些关于所指示的匹配的额外信息(如组、索引和原始输入),但没有一个包含用于获取匹配的原始正则表达式。
因此,无法从匹配中获取该信息,因为匹配函数没有返回该信息。
发布于 2022-02-13 01:29:39
匹配结果本身不能导致原始正则表达式,仅仅因为不同的正则表达式可以导致相同的结果,即使是在相同的字符串上。例如,字符串"abcd" -所有以下正则表达式:/abcd/、/a..d/ /a.*/和更多,将完全相同的方式匹配字符串。
检索原始regex的唯一方法是,如果返回对象中的match()方法确实存储了对regex的引用。没有理由认为是这样的,但是您可以实现自己的匹配函数。有点像
function myMatch(str, regex) {
var match = str.match(regex);
if (match === null) {
match = [null];
}
match.source = regex;
return match;
}https://stackoverflow.com/questions/71096138
复制相似问题