如何将正则表达式转换为字符串文字并再次转换回来?

2023-11-25

我怎么能够:

  1. 将带有标志的 JavaScript RegExp 转换为字符串文字(想想 JSON),
  2. 并将该文字转换回正则表达式?

例如使用字符串"the weather is nice today":

var myRe = new RegExp("weather","gi");
var myReToString = myRe.toString(); // myReToString is now "/weather/gi"

var myReCopy = /* How to get this copy only from myReToString ? */

要修改原始 RegExp 属性,请参阅虎三郎的回答.


查看访问器属性RegExp原型如source and flags。所以你可以这样做:

var myRe = new RegExp("weather", "gi")

var copyRe = new RegExp(myRe.source, myRe.flags); 

规格请参见http://www.ecma-international.org/ecma-262/6.0/#sec-get-regexp.prototype.flags.

序列化和反序列化正则表达式

如果您这样做的目的是序列化正则表达式,例如序列化为 JSON,然后将其反序列化回来,我建议将正则表达式存储为元组[source, flags],然后使用重构它new RexExp(source, flags)。这看起来比尝试使用正则表达式将其分开或评估它要干净一些。例如,您可以将其字符串化为

function stringifyWithRegexp(o) {
  return JSON.stringify(o, function replacer(key, value) {
    if (value instanceof RegExp) return [value.source, value.flags];
    return value;
  });
}

回来的路上你可以使用JSON.parse使用恢复器来恢复正则表达式。

修改正则表达式

如果要在保留标志的同时修改正则表达式,可以使用修改后的源和相同的标志创建一个新的正则表达式:

var re = /weather/gim;
var newre = new RegExp(re.source + "| is", re.flags);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将正则表达式转换为字符串文字并再次转换回来? 的相关文章

随机推荐

  • Opencv Python 使用 Numpy 数组裁剪图像

    我正在使用 OpenCV 3 1 0 dev 和 python 2 7 我正在尝试裁剪掉我缝合的图像的黑色外部 困难在于图像中还有其他黑色像素 因此 cv2 findcontours 返回一个非常有趣的 numpy 数组 第一张图片是我所拥
  • 从 .NET 应用程序中读取和解码存储在图像或 PDF 文件中的 PDF-417 条形码

    我正在寻找一个能够解码来自PDF 417条码嵌入图像文件或 PDF 中 此时 我只能找到一个Java版本 and a C版 理想情况下 这个库应该是开源且免费的 但我怀疑这样的解码器是否存在 我愿意尝试您可能已经使用过的现有产品的演示 这让
  • Python请求,如何为每个请求绑定不同的源ip? [复制]

    这个问题在这里已经有答案了 我正在尝试学习一些Python 但我在要测试的内容中遇到了逻辑问题 目前 我的代码编写方式是在进程启动时绑定到 source address 不会改变 import socket import requests
  • 如何通过 JavaScript 禁用 Chrome 的已保存密码提示设置

    有没有办法借助 JavaScript 或 jQuery 来操作 Chrome 设置 我想使用 JavaScript 禁用保存密码弹出气泡 这个怎么做 现在我将回答我自己的问题 它可以在 chrome 和 mozilla firefox 中完
  • 将 ForEachAsync 与 Action 内的 wait 一起使用时不等待

    以下应该返回 C 但它返回 B using System Data Entity var state A var qry from f in db myTable select f await qry ForEachAsync async
  • 如何告诉 Visual Studio 在出现特定异常时不要中断?

    我有一个特定类型的异常 我希望 Visual Studio 能够处理该异常不继续并显示异常助手屏幕 本质上 我希望它只是让我的正常异常处理基础设施来处理它 该异常是 System Exception 的继承者 我编写了它并拥有其源代码 任何
  • Phonegap - 如何使状态栏变黑?

    非常简单的一个问题 我似乎找不到答案 我如何将 iPhone 状态栏 顶部的细栏 带有接收 电池等 从默认灰色更改为黑色PhoneGapiPhone 应用程序 谢谢 格伦 PhoneGap iPhone 应用程序只是一个常规的 Xcode
  • WPF DataGrid SelectedItem 绑定在项目更改后停止工作

    我的问题 情况非常类似于Wpf DataGrid SelectedItem 在单元格编辑后失去绑定但我没有使用任何 自定义 WPF 框架 我有一个实现的模型INotifyPropertyChanged and IEditableObject
  • 重用异步套接字:后续连接尝试失败

    我试图在异步 HTTP 客户端中重用套接字 但我无法第二次连接到主机 我基本上将异步 HTTP 客户端视为具有以下状态的状态机 可用 插座可供使用 正在连接 套接字正在连接到端点 发送 套接字正在向端点发送数据 正在接收 套接字正在从端点接
  • 为什么书上说“编译器在内存中为变量分配空间”?

    为什么书上说 编译器在内存中为变量分配空间 这不是可执行文件吗 我的意思是 例如 如果我编写以下程序 include
  • 无法循环打开 png 设备

    我一直在摆弄 R 中的一个函数 长话短说 我有一个for loop 在每一步 我使用保存一个图png 然后立即readPNG这样我就可以提取RGB信息 然后我制作第二个情节 然后readPNG这样我就可以比较两个图像的 RGB 问题是我不断
  • Snowflake (LEFT JOIN) LATERAL:无法评估不支持的子查询类型

    横向连接 在 FROM 子句中 LATERAL 关键字允许内联视图引用该内联视图之前的表表达式中的列 横向连接的行为更像是相关子查询 而不是大多数连接 让我们稍微调整一下文档中提供的代码 CREATE TABLE departments d
  • 导入错误:未找到 MagickWand 共享库 [windows]

    早上好 经过多次尝试运行 from wand image import Image 我收到以下错误 Traceback most recent call last File C Users XXXXX PycharmProjects PDF
  • Botframework:如何使用机器人处理长时间运行的任务?

    如何处理机器人上长时间运行的任务 以便客户端不会在 15 秒后再次尝试发送消息 我有一个带有 botframework v3 的机器人 并通过直线连接客户端 The 直达专线通道连接器本身不会重试发送消息 如果它在向您的机器人发送消息后 1
  • 获取 .NET 对象的内存地址 (C#)

    我试图追踪单声道运行时中的一个错误 其中一个变量似乎分配给一个有效对象 然后稍后重新分配给一个虚假对象 特别是 early in code I allocate fine var o new object valid allocation
  • 两个 ddev 项目之间的通信

    我有两个需要相互交互的 ddev 项目 当遇到一些问题时 我会检查连接的已解析 IP 我通过 ssh 进入 project1 并 ping project2 来完成此操作 ping project2 ddev local 域名解析为 127
  • Spring security oauth 2简单示例

    我尝试根据官方教程实现我自己的示例Sparklr2 Tonr2 一切看起来都不错 但是当我从web xml in my Tonr2实现 弹簧安全过滤器我有例外 尚未为当前请求建立重定向 URI 我不明白我应该使用什么 URL 这是我的代码
  • 凹边界半径可以吗?

    这是一个简单的凸示例 http jsfiddle net swY5k test width 200px height 200px background 888888 border radius 50px 但是 我想要一个凹形边界半径 我尝试
  • jQuery .each css 不是一个函数

    我有一个包含 3 个成员的 jQuery 对象 var elements this wrapperName gt ul gt li gt a gt img Object 0 img 1 img 2 img length 3 prevObje
  • 如何将正则表达式转换为字符串文字并再次转换回来?

    我怎么能够 将带有标志的 JavaScript RegExp 转换为字符串文字 想想 JSON 并将该文字转换回正则表达式 例如使用字符串 the weather is nice today var myRe new RegExp weat