繁体   English   中英

Node.js .match()方法正确用法?

[英]Node.js .match() method correct usage?

我从一个人那里买了一些代码,然后决定修改它。 首先,它是用Node.js编写的,并且我对node.js的编程经验很少(没有),尽管我知道不错的python和一些C#,所以我有点理解。 尽管,当我想开始编辑代码时,我并没有成功复制他的所作所为。

steamFriends.on('friendMsg', (id, msg) => {
  if (config.get('admins').indexOf(id) == -1) return;
  if (msg.indexOf('!price') == 0) {
    var match = msg.match(/!price (director|audition) ([\.0-9]+)/);
    if (!match) steamFriends.sendMessage(id, 'Usage: !price <director or audtion> <price> (e.g. !price director 3.77)');
    else {
      steamFriends.sendMessage(id, 'Successfully set price of '+match[1] + ' reels to '+match[2] + '!');
      PRICES[match[1] == 'audition' ? 0 : 1] = parseFloat(match[2]);
      changePrices();
    }
  }
  else if (msg.indexOf('!changename') == 0) {
    var name = msg.match(/!changename ([\A-Z]+)/);
    steamFriends.setPersonaName(name)
  }
});

最上面的显然是他的,最下面的是我的。 我到底在做什么错? 我认为.match()方法在这里使用是错误的,但是我不知道该用什么。

如果我理解正确,则需要获取以下字符串中的!changename username!changename username

这是固定的“您的”代码的一部分:

else if (msg.indexOf('!changename') == 0) {
    var name = msg.match(/!changename ([A-Z]+)/i); //Added i flag (Case insensitive
    if(name)
       steamFriends.setPersonaName(name[1]); //The username will be in name[1]
}

您无需在字符集中转义\\A[AZ]就足够了,我添加了i标志,我相信您需要这样做,如果只需要大写字母,请将其删除。

.match可以在那里完美使用,问题在于您需要知道.match返回一个匹配数组。

 var string = "!changename Foo"; var matches = string.match(/!changename ([AZ]+)/i); document.body.innerHTML = "0: " + matches[0] + "<br>1: " + matches[1]; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM