2016-08-04 80 views
0

我正在构建一个nodeJS JavaScript应用程序,并试图使用正则表达式来处理一些降价文件。正则表达式.exec()丢失匹配字符串的第一个数字

我有以下代码:

var title = /```.(.*?\n)/.exec(codeBlock); 
console.log('Code: ' + codeBlock); 
console.log('Title: ' + title[1]); 

,输出是:

Code: ```TypeScript 
animationSet = new animationModule.Animation([{ 
    target: view, 
    rotate: 360, 
    duration: 3000, 
    iterations: Number.POSITIVE_INFINITY, 
    curve: view.ios ? UIViewAnimationCurve.UIViewAnimationCurveLinear : new android.view.animation.LinearInterpolator 
}]); 
animationSet.play().catch((e) => { 
    console.log("Animation stopped!"); 
}); 
// Call animationSet.cancel() to stop it; 
``` 
Title: ypeScript 

通知,而不是完整的“头衔”我找的第一个字符。如果我添加一个空格,例如代码块的第一行是``` TypeScript,那么我会得到Title: TypeScript的输出。

我的第一个角色在哪里?我怎样才能找回来!

+0

使用'。 *'为了更快的正则表达式,'''而不是'\ n'为了更广泛的兼容性,不过你必须使用'm'修饰符。 – 4castle

回答

1

Helpful tool

hmmmm您捕获组开始它说后首次系统字符

/```.(.*?\n)/ 

  • ``` - 这3个charaters
  • 。 - 一个任何系统字符< - 这里就是你的系统字符消耗,但没有捕获
  • ( - 开始捕获组
  • ...等

所以有效的方式将是:

```(.*?\n)