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

时间:2013-03-04 13:05:56

标签: 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的结果来手动执行替换 - 但据我所知,match返回的值只是字符串 - 它们不会给你任何有用的东西(例如整个文本中匹配的位置)。

或者你认为我这样做完全错了?我想要的整体流程是:

  • 在文本中找到每个占位符
  • 使用namedescription
  • 提示用户进行替换
  • 使用用户提供的值替换文本中的占位符表达式。

1 个答案:

答案 0 :(得分:0)

对于每个namedescription个tupples:

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