我注意到很多代码都是人们做的事情:
myClass.someMethod(something here, $1);
1美元从“这里有什么”中获取价值?
这是什么?我似乎无法在任何地方找到它?但是这个步骤,在正则表达式的情况下使用了很多...
答案 0 :(得分:5)
您经常会在正则表达式中看到这一点,其中$1
表示您正在将捕获组转移到新值中。
例如,假设我们正在为我们的网站构建推文解析器。我们想在推文中找到@引用,并将它们转换为指向这些特定帐户的链接:
// Our Tweet
$t = "I am @jonathansampson, and I work with @appendTo.";
// Find every occurence of @something, capture 'something'
echo preg_replace("/@([a-z]+)/i", "<a href='http://twitter.com/$1'>$0</a>", $t);
请注意,我们匹配@something的每一个匹配项,但我们将(
和)
中的用户名部分包装起来,以便我们可以在替换文本中单独处理它。整个模式由$0
表示,它将整个值从@
保存到用户名中的最后一个字符。
JavaScript也是如此:
var tweet = "I am @jonathansampson, and I work with @appendTo.",
patrn = /@([a-z]+)/gi,
links = tweet.replace(patrn, "<a href='http://twitter.com/$1'>$&</a>");
变量links
现在包含值:
console.log(links);
/*
"I am <a href='http://twitter.com/jonathansampson'>@jonathansampson</a>, and
I work with <a href='http://twitter.com/appendTo'>@appendTo</a>."
*/
您可能会注意到我在JavaScript中使用$&
来获取整个匹配模式,而在PHP中使用$0
- 我们必须处理这些生活中的差异。我道歉;)
答案 1 :(得分:0)
如果你在谈论javascript,可以在声明中使用$,所以它可能是一些东西。
例如,您可以将变量声明为
var $1 = 1;
然后在通话中使用
myClass.someMethod(something here, $1);
同样可以是对函数的引用。