我刚问了一个关于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.
如何为时间戳中的第一个字符添加可选检查?
谢谢!
答案 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"]