进行此正则表达式替换的好方法
Nice way to do this regex substitution
我正在编写一个javascript函数,它需要一个正则表达式和一些元素,它将正则表达式与name属性进行匹配。
假设我通过了这个正则表达式
/cmw_step_attributes']'['d*']/
以及结构如下的字符串
"foo[bar][]chicken[123][cmw_step_attributes][456][name]"
所有数字都可能变化或丢失。 我想将正则表达式与字符串匹配,以便将 456 换成另一个数字(会有所不同),例如 789。 所以,我想结束
"foo[bar][]chicken[123][cmw_step_attributes][789][name]"
正则表达式将与字符串匹配,但我无法将整个正则表达式换成 789,因为这会清除"[cmw_step_attributes]["位。 必须有一种干净简单的方法来做到这一点,但我无法理解它。 有什么想法吗?
谢谢,马克斯
捕获第一部分并将其放回字符串中。
.replace(/(cmw_step_attributes']'[)'d*/, '$1789');
// note I removed the closing ] from the end - quantifiers are greedy so all numbers are selected
// alternatively:
.replace(/cmw_step_attributes']'['d*']/, 'cmw_step_attributes][789]')
要么从字面上重写替换字符串中必须保持不变的部分,要么将其放在捕获括号内并替换引用它。
请参阅答案:正则表达式以匹配外括号。
正则表达式是错误的工具,因为您正在处理嵌套结构,即递归。
你试过吗:
var str = 'foo[bar][]chicken[123][cmw_step_attributes][456][name]';
str.replace(/cmw_step_attributes']'['d*?']/gi, 'cmw_step_attributes][XXX]');
相关文章:
- 使用replace方法替换innerHTML以及在Javascript中不起作用的正则表达式
- 我收到此错误:无法在 String.toJadenCase 调用未定义的方法“替换”
- Javascript 将方法替换为数组和正则表达式
- 使用 Javascript 使用自定义替换方法替换 unicode chracter
- 未捕获的类型错误: 无法调用 null 的方法“替换”
- 如何在数组中推送以变量作为键和值的新对象,我也不确定我是否用方法替换做对了
- 未捕获的类型错误:无法调用未定义的下划线.js的方法“替换”
- 角度:无法调用未定义的Android浏览器的方法“替换”
- 如何使用http.post方法替换或更新文本区域中的现有内容
- 如何将 .live() 方法替换为 .on() 方法
- 用jQuery方法替换没有css查询选择器
- jQuery:.load()方法替换目标选择器内容或将其附加到其中
- 未捕获的类型错误:无法调用未定义的方法“替换”
- 对象在节点验证器模块中没有方法替换
- 未捕获的类型错误:无法调用未定义的方法“替换”
- Jquery .error方法替换
- 获取错误"不能调用方法'替换'undefined"
- 在javascript中,replace()方法替换包含实际替换部分的单词
- 用自定义方法替换本机对象(数组)方法:是否安全?兼容的
- 无法在未定义的脚本问题上调用方法替换