콜백 함수의 매개변수 설명도 매우 정확합니다.
첫 번째 매개변수는 일치하는 문자열이고, 마지막 매개변수는 원래 문자열이며, 두 번째 매개변수는 일치하는 문자열의 원래 문자열 인덱스의 시작입니다.
그런데 두 번째부터 마지막까지 세 번째 사이의 매개변수가 무엇인지 궁금합니다. 실제로 W3school에서는 이미 답변을 제공했습니다.
replace() 메서드는 문자열의 일부 문자를 다른 문자로 바꾸거나 정규식과 일치하는 하위 문자열을 바꾸는 데 사용됩니다. 구문은 다음과 같습니다.
stringObject.replace(regexp/substr,replacement)
replacement는 문자열 또는 함수일 수 있습니다. 문자열인 경우 각 일치 항목이 문자열로 대체됩니다.
ECMAScript v3에서는 replacement() 메서드의 매개변수 대체가 문자열이 아닌 함수일 수 있다고 규정합니다. 이 경우
함수가 각 일치 항목에 대해 호출되고 해당 함수가 반환하는 문자열이 대체 텍스트로 사용됩니다. 이 함수의 첫 번째 매개변수는 패턴과 일치하는 문자열입니다. 다음 인수는 패턴의 하위 표현식과 일치하는
문자열입니다. 이러한 인수는 0개 이상이 있을 수 있습니다. 다음 매개변수는 일치가 발생하는 stringObject의 위치를 선언하는 정수입니다. 마지막 매개변수
는 stringObject 자체입니다.
분명히 대체 함수의 두 번째에서 세 번째 매개변수는 "패턴의 하위 표현식과 일치하는 문자열"입니다. 특정 숫자는 하위 표현식 수에 따라 다릅니다.
이를 바탕으로 비교를 위해 두 가지 예를 제시합니다.
예 1:
문자열: "CJ9080"
일치 패턴은 /CJ[0-9]{2}/g ( 아니요 하위 표현식)
예상 결과:
대체 함수에는 다음과 같은 3개의 매개변수가 있습니다.
【0】"CJ90"
【1】0
【2】"CJ9080"
테스트 코드:
function replacementStr(s) {
return s.replace(/CJ[0-9]{2}/g,
function(){
for (var i = 0, len = 인수.length; i < len; i ) {
console.info("인수 " i ": " 인수[i]);
}
})
};
실행 결과:
예 2:
문자열: "CJ9080"
일치 패턴: /((CJ)([0-9]{2}))/g ( 3개의 하위 표현식이 있습니다: (CJ[0-9]{2}), (CJ), ([0-9]{2}))
예상 결과:
대체 함수에는 각각 6개의 매개변수가 있습니다. :
[0] "CJ90"
[1] "CJ90"
[2] "CJ"
[3] "90"
[4] 0
[5 ] "CJ9080"
테스트 코드:
function replacementStr (s) {
return s.replace(/((CJ)([0-9]{2}))/g,
function(){
for (var i = 0, len = 인수.길이; i < len i ) {
console.info("인수 ": " 인수[i])
}; 🎜>
실행 결과:
분명히 두 테스트 사례의 결과는 예상과 일치했습니다. 바꾸기 함수의 대체가 함수인 경우 이 함수의 매개변수는 W3school이 말한 것과 정확히 같습니다.
[0]: 패턴과 일치하는 문자열
[1 - (길이 - 3) ] : 패턴의 하위 표현식과 일치하는 문자열, 0 이상
[length - 2]: 일치하는 문자열은 0부터 시작하는 원래 문자열의 인덱스 시작 위치에 있습니다. : 원본 문자열입니다.