【问题标题】:JavaScript/Jquery Dynamic RegExp generationJavaScript/Jquery 动态正则表达式生成
【发布时间】:2012-07-12 16:40:43
【问题描述】:

我在这个地方搜索了很多次,但我一直坚持我的正则表达式有效,但不是动态的。

id_name 是动态选取的字符串。然后,正则表达式应将匹配替换为“vals”中的单个 var。出于某种原因,当我在没有变量的情况下编写正则表达式时,它会按预期工作。我想我在转换为正则表达式对象时可能做错了。

原始字符串:

obj = values.replace(/{name}(.*?){\/name}/, 'igm');

正则表达式对象:

        re = '\/{' + id_name + '}(.*?){\\/' + id_name + '}\/';
        regexp = new RegExp(re, 'igm');
        obj = values.replace(regexp, vals);

提前致谢!

【问题讨论】:

  • 不知道这么简单 :),效果很好!谢谢!

标签: javascript regex dynamic


【解决方案1】:

如果您通过构造函数构造正则表达式,则不需要/,也不需要转义字符:

re = '{' + id_name + '}(.*?){/' + id_name + '}';

【讨论】:

  • 工作得非常好。我不明白什么,我试图交叉检查它的参考,但什么也没看到:(在我看来,正则表达式仍然是最困难的事情之一)当我将 {} 替换为 % 和 /% 时。 ..它第一次遇到它时工作正常,但第二次,它停止替换:`re = '%' + id_name+ '%(.*?)%/' + id_name + '%';正则表达式 = 新正则表达式 (re, 'igm'); values = values.replace(regexp, ''); `
  • @user1520088:我不知道 - 你可能在 id_name 中有一些奇怪的东西被识别为正则表达式。
  • 我不确定里面有什么。因为它取代了其他一切都很好。就在我第二次出错时将 {} 替换为 %% 时。我将 id_name 强制转换为字符串。即使是硬编码,它也有问题。我必须补充一点,无论它取代的是电子邮件页脚。第一部分是纯粹的基于文本的
    在这里和那里。第二个有一个表布局。喜欢%name%<tr><td>{name}John Doughnut{/name}</td></tr>%/name%。每当取消选中该选项时,它都会删除 %name% 部分。在第一部分工作,而不是第二部分(在表格内)。
  • 您是要删除%name%,还是要删除包括%name在内的所有内容?
  • %name% --- %/name% 之间的所有内容:)
猜你喜欢
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多