gpt4 book ai didi

javascript - 将 RegExp 转换为 String 然后再转换回 RegExp

转载 作者:IT王子 更新时间:2023-10-29 03:22:13 27 4
gpt4 key购买 nike

所以我有一个 RegExp regex =/asd/

我将它作为 key 存储在我的键值对存储系统中。

所以我说 str = String(regex) 返回 "/asd/"

现在我需要将该字符串转换回 RegExp。

所以我尝试:RegExp(str) 并且我看到了 /\/asd\//

这不是我想要的。它与 /asd/

不同

在将字符串转换为正则表达式之前,我是否应该只删除字符串中的第一个和最后一个字符?在这种情况下,这会得到我想要的结果,但如果 R​​egExp 具有 /i/g

之类的修饰符,则不一定有效

有更好的方法吗?

最佳答案

如果不需要存储修饰符,可以使用Regexp#source获取字符串值,然后使用 RegExp 构造函数转换回来。

var regex = /abc/g;
var str = regex.source; // "abc"
var restoreRegex = new RegExp(str, "g");

如果您确实需要存储修饰符,请使用正则表达式来解析正则表达式:

var regex = /abc/g;
var str = regex.toString(); // "/abc/g"
var parts = /\/(.*)\/(.*)/.exec(str);
var restoredRegex = new RegExp(parts[1], parts[2]);

即使模式中有 / 这也会起作用,因为 .* 是贪婪的,并且会前进到最后一个 /在字符串中。

如果性能是一个问题,使用 String#lastIndexOf 进行正常的字符串操作:

var regex = /abc/g;
var str = regex.toString(); // "/abc/g"
var lastSlash = str.lastIndexOf("/");
var restoredRegex = new RegExp(str.slice(1, lastSlash), str.slice(lastSlash + 1));

关于javascript - 将 RegExp 转换为 String 然后再转换回 RegExp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39154255/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com