2017-05-25 235 views
-1

只匹配一部分,我有串返回字符串

var v = "09/30/2016 12:00am - 2:00am"; 

我需要得到這個字符串的唯一日期部分:"09/30/2016"

對於它,我有正則表達式

var dateFormatRegex = /^(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])\/(19|20)\d\d$/ig; 

但它只匹配字符串,如果只有日期字符串。

我應該添加到我的正則表達式中以獲得來自字符串09/30/2016 12:00am - 2:00am09/30/2016

+3

返回是否必須是正則表達式? 'v.split('')[0]' – cgTag

+0

爲了從已知好格式的字符串中獲得這個結果,你應該'var datePart = v.substr(0,10);' –

+1

看看['String。匹配函數](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/match) – Lix

回答

1

你快到了!

您唯一的錯誤是您已將$置於您的正則表達式的末尾,這使得它與您發佈的字符串不匹配。

使用String.match將返回匹配組的陣列 - 在這種情況下,你只能有一個,然後你就可以用matches[0]

var dateFormatRegex = /^(0[1-9]|1[012])\/(0[1-9]|[12][0-9]|3[01])\/(19|20)\d\d/ig; 
// removed $ as in the target strings there is still stuff after the date 

var v = "09/30/2016 12:00am - 2:00am"; 
var matches = v.match(dateFormatRegex); 
var date = matches[0]; // === 09/30/2016" 
+0

這是一個單獨的問題,所以請爲此創建一個新問題 – Aron