2012-03-16 5 views
6

다음 (또는 유사한) 문자열 "08-27-2015 07:25:00 AM"을 분할하려고합니다. 는 현재 내가둘 다 들어있는 문자열의 숫자와 문자 분할

["02", "27", "2012", "03", "25", "00AM"] 

문제는 00AM 부분입니다 결과

var parts = date.split(/[^0-9a-zA-Z]+/g); 

사용합니다. 나는 그것도 분리되기를 원한다. 그래서 완벽한 결과는 다음과 같습니다

["02", "27", "2012", "03", "25", "00", "AM"] 
+1

입력 형식이 일관되게 해당 형식의 날짜입니까? – gahooa

+0

문자열이나 문자열의 실제 부분에 관심이 있으십니까? –

+0

나는 그것을 실제로 그런 식으로 구문 분석하는 데 사용하고 있습니다. 세르지오, 무슨 뜻인지 모르겠다. 나는 정확한 부분을 얻고 싶습니다. 그리고 나는 그 문자열을 나눔으로써 그것을 시도합니다. –

답변

20

당신이 일련의 문자 또는 숫자의 순서를 찾고 있지만 경우 모두 혼합, 당신은이 작업을 수행 할 수 있습니다 ...

"08-27-2015 07:25:00AM".match(/[a-zA-Z]+|[0-9]+/g) 

| 양쪽에 ...

["08", "27", "2015", "07", "25", "00", "AM"] 

결과, 우리는 하나 개 이상의 문자들의 시퀀스 및 O의 시퀀스를 가지고 ne 이상. 따라서 문자를 가로 질러 오면 문자가 아닌 문자에 도달 할 때까지 인접한 모든 문자를 모을 것이며,이 때 연속되는 모든 숫자를 모으는 식으로 진행됩니다.

다른 모든 문자는 단순히 일치하지 않으므로 결과의 일부가되지 않습니다. 날짜가 해당 형식에 항상있는 경우

+1

그건 그냥 완벽 해요, 그것은 심지어 '02June2015'를 나눕니다. 감사! –

1
var date = "08-27-2015 07:25:00AM"; 
var parts = date.replace(/([AP]M)$/i, " $1").split(/[^0-9a-z]+/ig); 

var date = "05June2012"; 
var parts = date.replace(/([a-z]+)/i, " $1 ").split(/[^0-9a-z]+/ig); 
+0

일반 스플리터를 작성할 수 있지만 결과 배열에서 무엇을 기대해야하는지 알 필요가 있습니다. 따라서 구문 분석과 관련하여 유용한 목적이 있는지 확실하지 않습니다. 즉 입력 형식을 모르면 결과 배열의 크기가 달라져서 다른 위치에 다른 종류의 요소가 생깁니다. 어떻게해야 할 지 알았습니까? –

0

당신은 사용할 수 있습니다

var parts = date.match(/([0-9]{2})-([0-9]{2})-([0-9]{4})\s([0-9]{2}):([0-9]{2}):([0-9]{2})(AM|PM)/).splice(1)

0

내가 원하는 필드를 구문 분석 할 날짜 라이브러리를 사용합니다. 그렇게하면 여러 형식을 처리 할 수 ​​있고 정규 표현식으로 파싱하는 것에 대해 걱정할 필요가 없습니다. DateJS은 조금 오래되었지만 구문 분석을 위해 잘 수행됩니다.