Javascript与RegEx分开

时间:2010-06-15 17:42:54

标签: javascript regex

我刚问了一个关于Regex的问题,并得到了一个很好的答案:JavaScript Split without losing character

现在,我有另一个问题。

我目前的Regex看起来像这样:

var split = text.split(/(?=\w*\d*\d:\d\d)/);

基本上,我正在尝试使用时间戳进行拆分(例如 - 9:30或10:30,它们之间的差异是后者中的额外数字)。我该怎么做?

目前,如果我有这两个:

9:30 pm
The user did action A.

10:30 pm
Welcome, user John Doe.

分组是:

9:30 pm
The user did action A.
----
1
----
0:30 pm
Welcome, user John Doe.

如何为时间戳中的第一个字符添加可选检查?

谢谢!

3 个答案:

答案 0 :(得分:1)

var split = text.split(/(?=\w*[\d]{1,2}:[\d]{2})/);

RegexPal对这些任务很有帮助。

答案 1 :(得分:1)

我不清楚你要对文本做什么,但我确实有一个正则表达式,希望只能帮助匹配时间。

\d{1,2}:\d{1,2} (am|pm)

你的正则表达式和andy的正则表达式的问题在于*是贪婪的。这意味着零次或多次匹配,尽可能多次。使用{min,max}和您需要的确切数字将更准确并避免贪婪*。

编辑:Andy's确实在他所链接的网站上工作。 *似乎并不贪心。这两种模式都适用于你吗?

答案 2 :(得分:1)

请参阅my answer您的其他问题,我通过添加字边界在正则表达式中解决了这个问题:

var split = journals.split(/\s*(?=\b\d+:)/);

使用\s*更新它以删除任何不必要的空格(但不包括换行符)。结果:

["9:30 pm    
The user did action A.", "10:30 pm  
Welcome, user John Doe.", "11:30 am
Messaged user John Doe"]