2013-03-18 2 views
-5

이 2 개가 수행하는 작업의 차이점은 무엇입니까? 들으2 개의 정규식 문자열의 차이

var m = document.referrer.match(/\&cd=([\d]*)/); 

하나보다 효율적이고 효과적인

var m = document.referrer.match(/cd=(.*?)&/); 

?

+8

효과적인 무엇입니까? 그들은 같은 일을하지 않습니다. –

+2

그들은 둘 다 쿼리 부분에'cd' 매개 변수가있는 URL을 원하지만 숫자를 필요로하고 앞에 다른 쿼리 매개 변수가 있어야합니다. 다른 하나는 ANY 값을 허용하지만 다른 값 매개 변수가 필요합니다. 예 : 그들은 서로 관련이 있지만 확실히 동일하지는 않습니다. –

+1

가장 효율적이고 효과적인 방법은 가장 빠른 답변을 얻을 수있는 방법입니다. 알고있는 사람과 일치시키려는 것이 무엇인지 모른 채. –

답변

3

/\&cd=([\d]*)/ - 모든 0 개 이상의 십진수 뒤에 "& CD ="로 시작하는 모든 문자열과 일치합니다. 첫 번째 캡처 그룹은 십진수입니다.

/cd=(.*)&/은 -와 최초의 "&"을 포함하여 최대 0 개 이상의 문자 뒤에 "CD ="로 시작하는 모든 문자열과 일치합니다. 첫 번째 캡처 그룹은 "cd ="와 "&"사이의 모든 문자입니다.

그들은 비슷하지만 동일하지 않습니다. 어느 것이 당신의 정확한 요구에 달려 있느냐에 달려 있습니다. 귀하의 의견을 볼 때, 당신이 사용하고자하는 것 같습니다 :

var m = document.referrer.match(/[?&]cd=(\d+)/); 
+1

'cd = (. *) &'는'garbagecd = something &'을 허용 할 것입니다. 그러나'cd = 무언가'가 끝났다. 만약 값에 digits 이외의 값이 포함되어 있다면'cd key '의 전체 값을 포착하지 못할 수도 있고'cd '가 첫 번째 키 - 값 쌍인 경우도 배제 할 수있다. (\ & cd = ([\ d] *) . – nhahtdh

+0

첫 번째 값을 사용하면 많은 0 값을 얻을 수 있습니다.이 경우 비정상입니다. 명확하게하려면 - 나는 Google 검색 결과 URL에서 키워드 순위 값을 추출합니다. 이 사실을 밝히지 않은 것에 대해 사과드립니다. – user2022284

+0

@ user2022284 0 값은 무엇을 의미합니까? 입력 문자열과 일치하지 않습니까? 캡처 그룹이 비어 있다고? 캡쳐 된 값은''0 ''입니까? –