2014-01-30 1 views
0

정규 표현식에 대한 일치를 반환해야하는 JavaScript 코드가 null을 반환하는 이유를 알아 내려고 노력했습니다..match는 정확하고 일치하는 정규 표현식과 일치시 null을 반환합니다.

나는 기본적으로 정규식을 사용하여 Google 캘린더 피드에서 날짜를 가져 오려고하며 regexpal.com에서 정규식과 그 작업을 테스트했습니다.

When: Tue Jan 21, 2014 1:30pm to 3pm 
GMT<br /> 

참고 줄 바꿈 및 슬래시 :

var eventTextDate = String(value.summary); 
var patt1 = /([A-Z][a-z]{2}){2}\d+, \d+ \d+:\d+.m/; 
var eventDate = eventTextDate.match(patt1); 

value.summary은 다음과 같다 :

여기 내 코드입니다. 그들은 슬래시와 개행을 없애기 위해 문자열을 부분 문자열 (5,30)에 넣으려고했으나 도움이되지 않는다고 생각했습니다.

또한 정규식을 /.../과 같이 변경하면 세 개의 첫 번째 문자가 반환됩니다. 그래서 저는 기본적인 코드 메커니즘과 구조를 알고 있습니다.

정규 표현식을 처음 사용하기 때문에 정규식에 약간의 오류가있는 것 같습니다 (regexpal.com에서 작동하더라도).

이 문제와 관련하여 도움이나 조언을 보내 주시면 감사하겠습니다.

+2

입력란은 무엇이며 어떤 출력물을 만들고 싶습니까? –

+0

ajax 응답 (XML 문서)에서 입력을받습니다. 나는 ajax 응답 객체를 통해 $ .each 루프를 수행하여 value 객체를 얻는다. 각 값 개체에는 제목, 일부 다른 데이터 및 날짜가 포함 된 요약이 포함됩니다. 정규 표현식을 사용하여 요약에서 날짜를 추출하고 싶습니다. –

+1

왜 그렇게 복잡합니까? 왜 날짜를 추출하기를 원할 때'When : \ s (. *) \ s'를 사용하지 않을까요? 이렇게하면 첫 번째 캡처 그룹에서 전체 날짜 문자열을 얻을 수 있습니다. 그 바스티 M 덕분에 –

답변

1

당신은 당신의 정규 표현식으로

When:\s(.*)\s 

를 사용할 수 있습니다.
날짜 문자열은 예를 들어, 프리스트 캡처 그룹의 match-array의 2 번째의 인덱스로 액세스 할 수 있습니다 : 당신이 to 3pm 부분이 필요하지 않은 경우

var re = /When:\s(.*)\s/; 
var str = 'When: Tue Jan 21, 2014 1:30pm to 3pm\nGMT<br />'; 
var m = str.match(re); 

alert(m[1]); 

, 다음

에 정규식을 수정
When:\s(.*)\sto 
관련 문제