2010-06-15 70 views
1

我只是问了一个问题关于正则表达式,并获得了极大的答案:JavaScript Split without losing character的Javascript分裂与正则表达式

现在,我还有一个问题。

我现在的正则表达式如下:

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

当参数是一个正则表达式时,浏览器在split()方法中存在各种不兼容性。看到这个:http://blog.stevenlevithan.com/archives/cross-browser-split – Pointy 2010-06-15 18:25:37

回答

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"] 
+0

非常完美,非常感谢! – Rohan 2010-06-16 06:54:15

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

RegexPal对这些任务很有帮助。

+0

谢谢,但它似乎并没有工作。 – Rohan 2010-06-15 17:58:31

+0

哪个不 - 该模式或网站?如果您正在使用该网站,则需要放入该模式,即'(\ w * \ d * \ d:\ d \ d)'将匹配您输入的内容。 – Andy 2010-06-15 18:09:45

+0

+伟大的链接 – chapluck 2010-06-15 18:19:58

1

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

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

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

编辑:安迪的确在他所链接的那个网站上工作。 *看起来并不贪婪。两种模式都适合你吗?

+0

'{min,max}'是我第一次尝试。真正的问题是向前看,它会向前看,并找到'0:30'并且分裂,而不是'10:30'。添加所需的单词边界会强制向前查找“单词”开始的位置。 +1,欢迎来到Stack Overflow :-) – 2010-06-15 19:14:01