首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有可能从match获得“regex源”吗?

有可能从match获得“regex源”吗?
EN

Stack Overflow用户
提问于 2022-02-12 21:46:47
回答 2查看 64关注 0票数 -1

当正则表达式分别定义时,我可以得到它的源代码。例如:

代码语言:javascript
复制
let r1 = new RegExp("el*");
console.log(r1.source);
// el*

或者:

代码语言:javascript
复制
let r2 = /el*/;
console.log(r2.source);
// el*

如果正则表达式不是单独定义的,是否有一种提取方法?例如,类似于:

代码语言:javascript
复制
let m = "Hello".match(/el*/);
console.log(m.source?);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-12 21:54:14

不,

引用match()函数的文档

返回值 数组,其内容取决于全局(g)标志的存在与否,如果没有找到匹配,则为null。

因此返回值是一个数组(可以通过Array.isArray(m)// true进行测试)

但是,返回的数组中有一些关于所指示的匹配的额外信息(如组、索引和原始输入),但没有一个包含用于获取匹配的原始正则表达式。

因此,无法从匹配中获取该信息,因为匹配函数没有返回该信息。

票数 0
EN

Stack Overflow用户

发布于 2022-02-13 01:29:39

匹配结果本身不能导致原始正则表达式,仅仅因为不同的正则表达式可以导致相同的结果,即使是在相同的字符串上。例如,字符串"abcd" -所有以下正则表达式:/abcd//a..d/ /a.*/和更多,将完全相同的方式匹配字符串。

检索原始regex的唯一方法是,如果返回对象中的match()方法确实存储了对regex的引用。没有理由认为是这样的,但是您可以实现自己的匹配函数。有点像

代码语言:javascript
复制
function myMatch(str, regex) {
  var match = str.match(regex);
  if (match === null) {
    match = [null];
  }
  match.source = regex;
  return match;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71096138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档