2011-09-16 3 views
0

다음과 같은 하위 문자열에 대해 더 큰 문자열을 검색하기 위해 정규 표현식을 만드는 방법은 무엇입니까?자바 스크립트 정규식하는 방법?

"x bed" OR "x or y bed" 

두 경우 모두 정수 x 및 y 모두에 액세스해야합니다.

어떤 도움을 주셔서 감사합니다 ....

답변

1

-

var subject = "1 bed,2 or 3 bed" 
var myregexp = /(\d+) bed|(\d+) or (\d+) bed/img; 
var match = myregexp.exec(subject); 
while (match != null) { 
    if (match[1]) { 
     alert("Found 'x bed', x is '" + match[1] + "'");  
    } 
    else { 
     alert("Found 'x or y bed', x is '" + match[2] + "', y is '" + match[3] + "'"); 
    }  

    match = myregexp.exec(subject); 
} 

데모 - http://jsfiddle.net/ipr101/WGUEH/

+0

매우 감사합니다! –

3
(?:\d+ or)?\d+ bed 

캡처 "X 침대"와 "X 또는"옵션을 추가

+2

캡쳐 그룹에서 찾고있는 변수를 래핑해야합니다. '(? : (\ d +) \ s + 또는 \ s +)? (\ d +) \ s + 침대'입니다. – Benjam

1

(\d+)\s+or\s+(\d+)\s+bed|(\d+)\s+bed 

제 H를보십시오! 자바 스크립트와

+0

@ Galen - 귀하가 올린 정규식이 저에게 효과적이지 않습니다. 더미 입력으로 실행할 때 아무것도 얻지 못합니다. "10 또는 12 개의 침대와 10 개의 침대, 15 또는 16 개의 침대" – rebnoob

1

난 당신이 출력이 유형의 원하는 있으리라 믿고있어 : 그건 당신이 원하는 것을의 올바른 해석이 있다면

"23 bed"   => "23" 
"32 or 45 bed"  => "32", "45" 
"4"    => no matches 
"99 or bed"  => no matches 
"or bed"   => no matches 

을, 이 정규식을 사용할 수 있습니다.

/(\d+)\s+bed|(\d+)\s+or\s+(\d+)\s+bed/

그리고 이것은 코드의 윤곽 당신은 여기에 테스트 베드 볼 수 있습니다 그것을

var str = "32 or 45 bed"; 
var matches = str.match(/(\d+)\s+bed|(\d+)\s+or\s+(\d+)\s+bed/); 
if (matches) { 
    alert(matches[1]);  // first numeric match 
    alert(matches[3]);  // second numeric match (null if not present) 
} 

을 사용하는 것입니다 설명의 방법으로

http://jsfiddle.net/jfriend00/9n5XK/

이 정규식은 두에를 부분품.

(\d+)\s+bed 

any sequence of digits that are captured 
followed by any amount of whitespace 
followed by "bed" 

두 번째 부분은 이것이다 : 첫 번째 부분은 이것이다

는 정규 표현식의 첫 번째 조각 또는 정규 표현식의 두 번째 조각 중 하나를 일치하도록 정규식이 설정되어
(\d+)\s+or\s+(\d+)\s+bed/ 

any sequence of digits that are captured 
followed by any amount of whitespace 
followed by "or" 
followed by any mount of whitespace 
followed by any sequence of digits that are captured 
followed by any amount of whitespace 
followed by "bed" 

.

따라서 캡처 된 조각은 슬롯 1, 2 및 3의 일치 배열에있게됩니다. 정규식 설정 방식에 따라 첫 번째 일치 항목은 슬롯 1 또는 2 (둘 중 하나가 아닌 값)와 두 번째 일치 (있는 경우) 슬롯 3에있을 것입니다.

이 일치 할 수있는 가능한 가장 짧은 가능한 정규식을 주장하지 않지만 이해하기 쉽습니다.