2012-09-22 120 views
1

我在JavaScript中有以下字符串,用正则表达式在javascript中分割字符串?

Id:121,RefId:123,Date:Sep 22, 2012 12:00:00 AM 

当我试图把它分成3个键,使用,值对作为分隔符它给我错了日期放,因为还有另外一个,(逗号)。
所以我想我必须使用正则表达式。
我想显示它如下;

Id:121 
RefId:123 
Date:Sep 22, 2012 12:00:00 AM 

任何人都可以请建议如何克服日期使用正则表达式额外的逗号?
在此先感谢...

+3

“有些人,遇到问题时想'我知道;我使用正则表达式'。现在他们有两个问题。“ – Joey

+0

你是怎么得到这样一个字符串的?它的模糊格式不容易处理。你为什么不使用JSON,CSV或其他? – Bergi

+1

@Joey:由于我们的失败尝试没有使用正则表达式,所以有时*不*使用正则表达式导致更多问题:) –

回答

4

你的意思是分裂的,其次是不是空白?

'Id:121,RefId:123,Date:Sep 22, 2012 12:00:00 AM '.split(/,(?=\S)/); 
// will give you ["Id:121", "RefId:123", "Date:Sep 22, 2012 12:00:00 AM "] 
+0

感谢xdazz ..感谢您的时间回答.. –

+0

did not known split接受正则表达式:O谢谢你。 – GottZ

2

,如果你真的想要一个正则表达式(而不是有限的拆分),你可以这样做:

var text = "Id:121,RefId:123,Date:Sep 22, 2012 12:00:00 AM"; 
text.match(/^(.+?),(.+?),(.+)$/); 
+1

你可以使用'[^,] *'而不是'。+?',这样会更高效。 –

+0

谢谢Jan-Stefan,这对我真的很有帮助... –

+0

[^,]或。+?在装配中不会有任何区别,但你可以选择你想要的。 – GottZ

2

如果你想使用正则表达式,你可以试试这个:

re = /^Id:(\d+),RefId:(\d+),Date:(.+)/ 
matches = re.exec("Id:121,RefId:123,Date:Sep 22, 2012 12:00:00 AM") 
matches[1] // "121" 
matches[2] // "123" 
matches[3] // "Sep 22, 2012 12:00:00 AM" 
相关问题