gpt4 book ai didi

javascript - 将 stringify regex 映射到 RegEx

转载 作者:行者123 更新时间:2023-11-30 05:46:45 25 4
gpt4 key购买 nike

我想做以下事情:

var regex = /^\/(.*)\/?$/i;

// "/^\/(.*)\/?$/i"
var stringifiedRegex = regex.string();

// //^\/(.*)\/?$/i/
var newRegex = new RegExp(stringifiedRegex);

正如您在将字符串化正则表达式转换回真正的正则表达式时看到的那样,正则表达式被修改并且不再匹配原始正则表达式。

知道如何解决这个问题吗?

博多

最佳答案

如果您将正则表达式存储为单个字符串(包括所有标志),您可以使用正则表达式将正则表达式拆分为需要传递给 new RegExp(好吧,那是一个句子...):

> regex = /^\/(.*)\/?$/i;
/^\/(.*)\/?$/i
> str = regex.toString()
"/^\/(.*)\/?$/i"
> m = str.match(/^[/](.*)[/]([^/]*)$/)
["/^\/(.*)\/?$/i", "^\/(.*)\/?$", "i"]
> newRegex = new RegExp(m[1], m[2])
/^\/(.*)\/?$/i

正则表达式匹配/,然后尽可能多地捕获,然后匹配结束的/并捕获可能的标志。

或者,如果您可以将其存储在数据库中的多个字段中,则分别存储三个标志的源字符串和三个 bool 值:

> regex = /^\/(.*)\/?$/i;
/^\/(.*)\/?$/i
> regex.source
"^\/(.*)\/?$"
> regex.global
false
> regex.ignoreCase
true
> regex.multiline
false

关于javascript - 将 stringify regex 映射到 RegEx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17502997/

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