搜索并替换特定模式
Search and replace for a specific pattern
我有以下要求:
我有一个作为的url
var url = '/test/mybin/processes/{testName}/test?id={testId}';
url中可以包含任意数量的{}
。比如说,上面的{}
位于{testName}
和{testId}
的两个位置。它可以有任意数量的此类参数。
我需要用实际值替换每个这样的params的值。在加载url之前,我需要首先知道每个{}
中的属性名称,并将其替换为实际值。
比方说,在上面的例子中,我必须首先提取{}中每个属性的名称,并用实际值替换它们。
在我的方法中:
testName="Test"
和testId=1
所以,我希望url值是
'/test/mybin/processes/Test/test?id=1'.
你能告诉我实现这一目标的最佳方法吗?
谢谢,Tani
像这样的东西应该可以做到:
var obj = { testName : "mytest", testId:1 };
var url = '/test/mybin/processes/{testName}/test?id={testId}';
var regex = /{(.*?)}/g;
var replaced = url.replace(regex, function(m,p1) {
return obj[p1];
});
alert(replaced);
正则表达式/{(.*?)}/
将匹配大括号(非贪婪)之间的任何内容,并将内容放入可以替换的组中。
通过添加/g
标志可以很容易地修复注释中的正则表达式:
/'{[^'}]*'}/g
但是,您可能会发现添加括号进行分组更容易,从而更容易在没有大括号的情况下提取大括号之间的实际内容:
/'{([^'}]*)'}/g
还要注意,在这种情况下,正则表达式中的{
和}
不需要转义,但包含转义'
function f(map,url) {
var pattern = /{('w+)}/g;
var replacer = function(a,b){
return map[b];
};
var o = url.replace(pattern,replacer);
return o;
}
http://jsfiddle.net/sean9999/poctcdLp
相关文章:
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 替换模式忽略模式中的字符
- 正则表达式根据模式替换所有匹配项
- RegExp替换不替换为模式
- 如何在 JavaScript 中替换遵循模式的所有单词
- Javascript:模式HREF需要替换
- 如何使用不可变对象替换观察者模式
- 替换“if else”语句的模式
- Jquery:在一个字符串中查找所有实例模式,提示用户替换模式的所有实例,然后进行替换
- 将弹出窗口替换为引导模式
- 哪种模式在 gsub 中使用!将有序列表 (li 标记) HTML 字符串替换为订单号
- 将字符串中的正则表达式模式替换为依赖于匹配项的替换字符串
- 根据Javascript中的模式替换单词
- 用Javascript模式替换提示
- 英特尔Mac上的Javascript Regex.是模式和子模式替换bug
- IE7|8中使用特殊替换模式替换字符串的奇怪行为
- Emacs -用另一个字符串模式替换一些字符串模式
- 用重复的模式替换一行正则表达式
- 将html类的模式替换为数字
- 引导模式替换按钮链接-动态Div id