javascript - 使用提示/回调 UI 替换正则表达式

标签 javascript regex templates callback

我正在尝试编写一个函数,该函数接受一长串文本,标识文本中的占位符,并提示用户提供一个应该代替占位符的值。占位符的标记看起来类似于用于图像或链接的标记:

some text, some more text, ?[name][description] more text, not just commas

其中namedescription是任意的文本。当我找到这些占位符时,我想弹出一个格式良好的对话框,使用名称和描述,并让用户提供替换值。

我已经有一个很好的函数(称为 htmlPrompt),您可以在其中传递一段 HTML(用于提示的主要部分),有一个文本框,然后调用一个回调函数您已提供结果(如果按下“取消”,则为 null),并带有以下签名:

function (htmlText, inputStartValue, callback)

在插入这个函数之前,我写了粗略的准备:

myText = myText.replace(/(\?\[(.+)\][ ]?(?:\n[ ]*)?\[(.+)\])/g,
   function (wholematch, m1, m2, m3) {
  var repValue = prompt(m2);
  if (repValue == null)
  {
    return m1;
  }
  return repValue;
});

它使用 DOM 内置的 prompt 方法 - 在格式化方面,它对我来说并没有真正完成足够的工作。

但是,我想不出插入 htmlPrompt 的方法 - 它仅模拟模式对话框并通过调用 callback< 提供最终结果.

我确实想过尝试手动进行替换,使用 match 的结果而不是 replace - 但据我所知, 返回的值code>match 只是字符串 - 它们不会为您提供任何有用的信息(例如整个文本中匹配的位置)。

或者你认为我的做法完全错误吗?我想要的总体流程是:

  • 查找文本中的每个占位符
  • 使用名称描述值提示用户进行替换
  • 将文本中的占位符表达式替换为用户提供的值。

最佳答案

对于每个 namedescription 元组:

首先使用match读取namedesription。 用户提示。 然后使用 replace 来替换它们。

关于javascript - 使用提示/回调 UI 替换正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15202288/

相关文章:

javascript - 如何删除 LokiJS 中的集合

javascript - 解决文档的 linter 错误 no-undef

python - pandas 根据模式拆分字母和数字混合列

Java 自定义解析器(如 XML)

c++ - Variadic 模板模拟 "runtime"扩展

c++ - 如何在 C++ 中将字符串作为模板类返回?

javascript - 如何通过在 Javascript 中循环从数组中删除多个项目

javascript - 使用对象数组创建一个新数组,其中包含原始对象数组中数值大于 15 的所有对象

用于在问号之前获取字符串的 Javascript 正则表达式(如果存在)

javascript - 单击 URL 到另一个页面并滚动后