Javascript regexp:在反向引用模式中使用变量
Javascript regexp: Using variables in backreference pattern?
我有一个模式来查找匹配的查询字符串:
'url.com/foo/bar?this=that&thing=another'.replace(/(thing=)([^&]*)/, '$1test')
我希望能够做的是使用变量值作为参数来匹配,如:
'url.com/foo/bar?this=that&thing=another'.replace('/(' + key + '=)([^&]*)/', '$1test')
[edit]下面是如何使用代码的上下文:
GetSrcParam: function(key, value) {
var newSrc = $(this._image).attr('src'),
pattern = '(' + key + '=)([^&]*)';
if (newSrc.match(pattern) == null)
newSrc += '&' + key + '=' + value;
else
newSrc = newSrc.replace(newSrc, '$1' + value);
return newSrc;
}
但是它不像预期的那样工作-有人能帮忙吗?
如果选择从字符串构造正则表达式,则需要去掉分隔符(但是如果正则表达式包含反斜杠,则需要将反斜杠加两)。试着
myregex = new RegExp('(' + key + '=)([^&]*)')
'url.com/foo/bar?this=that&thing=another'.replace(myregex, '$1test')
您是否知道这也将匹配url.com/foo/bar?something=another
中的thing=another
?为了避免这种情况,可以添加一个词边界锚:
myregex = new RegExp('(''b' + key + '=)([^&]*)')
相关文章:
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 如何在变量中存储多个模式参数并在 JavaScript 中打印该变量的值
- 函数调用的变量更改未显示在角度引导模式窗口中
- 流星技术/模式,用于等待数据库变量更改,然后在 in 之后执行某些操作
- 将变量传递给 Javascript 模块化模式方法
- 将变量传递给引导模式
- Django设计模式-在加载时填充客户端JavaScript变量的方法
- 使用模块模式时访问父作用域中的变量
- 可以将ng模式与变量一起使用吗
- 将变量从URL传递到简单模式弹出菜单
- 与变量匹配的Javascript模式
- 这种减少if语句中声明的变量范围的模式是一种好的做法吗
- 在Javascript严格模式下,您可以将参数分配给另一个变量
- 角度$scope变量未显示在引导模式初始化上
- 具有 John Resig 简单类模式的静态变量
- 揭示原型模式私有变量
- JavaScript 模块模式变量范围
- PHP和Bootstrap模式变量
- 第一次实现模块模式变量是未定义的
- JavaScript 揭示模块模式变量范围