2014-11-10 2 views
0

정규 표현식에 특히 강한 것은 아닙니다. 기본적으로, 나는 다음과 같은 문자열이 있습니다JS의 Regex를 사용하여 문자열의 특정 부분에있는 특정 패턴을 찾습니다.

Showing 1-20 of 748 results. 

내가는 "748"를 추출 숫자로 변환하고, 비교를 위해 그것을 사용하려고합니다. 예상대로, "Showing", "of""results"은 변경 될 것으로 예상되지 않지만 숫자는 변경 될 수 있습니다. 나는 두 가지 해결책을 염두에두고있다. 첫 번째는 lookbehinds를 사용하지만 JS가 지원한다고 생각하지 않습니다. 두 번째는 무딘 접근법을 사용하고 있습니다. match()을 사용하여 문자열의 모든 숫자를 찾고 반환 된 배열의 세 번째 인덱스에서 요소를 가져 오는 것이 좋습니다 ("748"이어야 함).

가장 좋은 방법은 무엇입니까?

+1

당신은 스스로를 알아낼 수 있어야합니다. 'of'다음에 숫자와 'results'가 나오고 숫자를 포착하십시오. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions – Swonkie

답변

1

내가 정규식을 사용 : 각각의 경우에 \d+ 1 이상의 숫자와 일치하는 것을 의미

Showing \d+-\d+ of (\d+) results\. 

. 찾으려는 번호 주변의 괄호를 캡처 그룹이라고합니다. 그것은이하는 모든이를 캡처입니다

(\d+)\sresults 

: 다음 작업을 수행 할 수있는 간단한 방법을 위해

var resultsRe = /Showing \d+-\d+ of (\d+) results\./; 
var numResults = resultsRe.exec(str); 
console.log("There are " + numResults + " results."); 
+0

국경의 경우 문자열의 형식에 따라 실패 할 수 있습니다. 예를 들어 '18 개의 결과보기'라고 표시되어있는 경우입니다. 지나치게 제한적인 패턴을 만들지는 않을 것입니다. – Swonkie

+0

'5 개 중 5 개 결과 표시'라고 표시되어있는 경우 OP가 말한 형식이 아닐 것입니다. – CoverosGene

+0

해달라고하지 마십시오. – Swonkie

0

: 검색 문자열이 str에 있다면

그래서, 결과는 자바 스크립트처럼 보일 수 있습니다 정수 결과 바로 앞에 정수.

관련 문제