为什么我的正则表达式实现不尊重时间?

问题描述:

HTML模板开始为{} @bigfoot通过 我的代码运行它之后它是{*}大脚为什么我的正则表达式实现不尊重时间?

如何看第二个正则表达式得到前首先做了什么?为什么?

html = html.replace(new RegExp("{@" + prop + "}", "g"), object[prop]); 
html = html.replace(new RegExp("@", "g"), "*"); 
+1

什么是'prop'的价值? – Dancrumb 2012-07-13 14:28:52

+0

各种价值观,不要疯狂。名称,my_address,favorite_color – user1472219 2012-07-13 14:49:56

第一个表达式不正确。

在正则表达式中使用大括号来指定给定捕获模式的特定重复计数。

要匹配大括号,你应该逃避它们。

html = html.replace(new RegExp("\\{@" + prop + "\\}", "g"), object[prop]); 
+0

wtf -3?是的,大括号DO工作得很好。我正在测试脚本注入,并以某种方式搞砸了它,所以我试着把它解决了最基本的问题。 -3? – user1472219 2012-07-13 14:49:03

+0

问题是你拿出了太多的细节。尝试在jsfiddle.net上创建一个包含所有已定义变量并重新创建问题的示例。 – BNL 2012-07-13 15:16:04

+0

idk它当然在那里工作。 http://jsfiddle.net/XPM8j/ – user1472219 2012-07-13 15:21:37

我创造了这个:http://jsfiddle.net/kxTs5/,但我不能重新创建您的问题。

然后我创建了http://jsfiddle.net/kxTs5/2/;它做到了这一点:o)

在第二个例子中,prop可能是一个打字错误,或者其他的东西,但它指的是文本中不存在的东西,所以没有匹配,所以没有改变。

我建议你自由使用的console.log,以确保你要匹配你以为你匹配

+0

感谢您的+1,但我的第一个回答实际上是不正确的。问题是由于'prop'不符合源文本中的任何内容...... *可能*在代码中某处出现错字。 – Dancrumb 2012-07-13 15:50:05