0

我注意到很多代码,人们在其中执行以下操作:

myClass.someMethod(something here, $1);

1 美元正在从“这里的东西”中获得价值?

这被称为什么?我好像到处都找不到?但是这一步,过程在正则表达式的情况下使用了很多..

4

2 回答 2

5

您经常会在正则表达式中看到这一点,其中$1表示您要转移到新值中的捕获组。

例如,假设我们正在为我们的网站构建一个推文解析器。我们想在推文中找到@references,并将它们转换为指向这些特定帐户的链接:

// 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- 我们必须处理生活中的这些差异。我很抱歉 ;)

于 2012-12-05T15:10:17.157 回答
0

如果你在谈论 javascript,$ 可以在声明中使用,所以它可能是一些东西。

例如,您可以将变量声明为

var $1 = 1;

然后在您的通话中使用它

myClass.someMethod(something here, $1);

同样,它可以是对函数的引用。

于 2012-12-05T15:18:33.810 回答