正则表达式:匹配日期和冒号之间的任何字符串

时间:2012-03-18 14:02:45

标签: javascript regex

所以我有这个字符串[14:42:49] Any Nick Name: Message bla bla,我唯一想要的是Any Nick Name

我从来都不擅长正则表达式,我不记得如何获得结果的特定部分。我来到这里:/\[([0-9]{2}(:|\])){3} (.+):/g导致[14:42:49] Any Nick Name:

确定我可以删除带有substr等的最后一个和第一个部分,但是不是更简单的方法吗?

4 个答案:

答案 0 :(得分:2)

这是正则表达式

/\[[^\]]+\]\s([^\:]+)/g

// test with
"[14:42:49] Any Nick Name: Message bla bla".match(/\[[^\]]+\]\s([^\:]+)/g); 

// "Any Nick Name"
console.log(RegExp.$1)

答案 1 :(得分:1)

你的正则表达式几乎是正确的。

var regexp = /^\[\d{2}:\d{2}:\d{2}\] (.+):/;

这与[xx:xx:xx] something:匹配,x为数字。 ^表示字符串应该从那里开始,\d表示数字。 g标志不会在此处添加任何内容。

使用.exec,并使用[1]获取第一组(在parens内匹配的字符):

regexp.exec("[14:42:49] Any Nick Name: Message bla bla")[1];
// "Any Nick Name"

答案 2 :(得分:0)

如果你想要的只是Any Nick Name,你可以使用它:

^.*?\] (.*?):

演示:http://regexr.com?30btc(将鼠标悬停在每个选项上以查看匹配的组)

答案 3 :(得分:0)

您可以像](包括空格)一样使用正面的lookbehind:

(?<=]\s)[\w\s]+