2014-07-25 9 views
2

정규식이 일치하는지 테스트하고 일치하는 경우이를 변수에 할당하거나 일치하지 않는 경우 일부 기본값에 할당하려면 현재 다음 작업을 수행하십시오.Javascript : 정규식을 테스트하고 한 줄에 일치하는 경우 변수에 할당

var test = someString.match(/some_regex/gi); 
var result = (test) ? test[0] : 'default_value'; 

한 줄의 코드로 JS에서 동일한 작업을 수행 할 수있는 방법이 있는지 궁금합니다.

명확한 설명 : 내 코드를 더 작게 만들 아니라 내가 지금처럼 변수의 수를 정의하고 장소에서 청소기를 만들려고 노력하고 있지 않다 :

var foo = 'bar', 
    foo2 = 'bar2', 
    foo_regex = %I want just one line here to test and assign a regex evaluation result% 

답변

5

당신은 OR 연산자를 사용할 수 있습니다 (||) 그 피연산자는 다른 피연산자의 제 truthy 경우

var result = (someString.match(/some_regex/gi) || ['default_value'])[0]; 

이 연산자는 첫 번째 피연산자를 반환한다. 따라서 someString.match(/some_regex/gi)이 위조 (즉 일치하지 않음) 인 경우 ['default_value']이 대신 사용됩니다.

예를 들어 두 번째 캡처 그룹을 추출하려는 경우 약간의 해킹이 발생할 수 있습니다. 이 경우 여러 변수를 초기화하는 동안이 작업을 정상적으로 수행 할 수 있습니다.

var foo = 'bar', 
    foo2 = 'bar2', 
    test = someString.match(/some_regex/gi), 
    result = test ? test[0] : 'default_value'; 
+0

정확히! 고마워, 비슷한 일을하기 위해 이미'||'를 사용하고있다. 그러나 '기본 값'을 배열에 넣는 것을 생각하지 않았다. 그것은 좋은 팁이다! – YemSalat

+1

@YemSalat 도움을 주어서 기쁩니다! 또 다른 해결책을 추가했습니다. 캡처 그룹이나 기타 무언가를 잡으려는 경우 조금 복잡해 질 수 있습니다. – Doorknob

+0

정규식에서 그룹 일치를 잡아 내고자 할 때 '해킹'이 조금 생깁니다. 'var result = (someString.match (/ some_regex/gi) || [, 'default_value']) [1]; // '기본 값'앞의 쉼표 [업데이트] 예 .. :) 다시 한 번 감사드립니다! – YemSalat