JavaScript의 RegExp 개체는 정규식 관련 작업에 사용됩니다. 이 개체는 특정 문자열이 특정 패턴을 만족하는지 확인하는 메서드 테스트를 제공합니다.
오늘 문제가 발생했습니다. >
여기 있는 두 테스트 문자열은 모두 정규식의 패턴을 충족하고 true를 반환해야 합니다. 그러나 테스트 결과는 true, false입니다.
문제는 RegExp 개체가 상태를 저장하고 테스트 메서드 실행 중 특정 단계에서 상태 정보가 사용되기 때문에 오류가 발생한다는 것입니다.
(참고: RegExp 전역 개체에는 RegExp.$1...RegExp$9 등과 같은 몇 가지 정적 속성과 메서드가 있습니다.)
이 문제에 대한 해결책도 매우 간단합니다. 매번 정규 표현식을 다시 초기화합니다. 표현식 개체:
]
제 생각에는 JavaScript에서 정규 표현식의 동작이 일반적인 사용 습관과 조금 다르다고 해야 할 것 같습니다. . 오랫동안 JavaScript를 사용해왔지만 이런 이상한 현상을 본 적이 없습니다. Python, C# 등 다른 언어는 그렇지 않습니다.
이 문제의 자세한 원인을 아시는 친구분, 조언 부탁드립니다.
물론 전역 매칭 모드 g를 사용했기 때문에 사용 후 lastIndex를 재설정해야 합니다.
var re = /^d (?:.d)?$/ig; == > "ig"
alert(re.test('112.3'));
re.lastIndex=0 //이 문장 추가
alert(re.test('33'));
또는
var re = /^d (?:.d)?$/i //==> "i"만, g는 없음
alert(re. test( '112.3'));
alert(re.test('33'));
괜찮습니다
애플리케이션 환경에서는 "g "가 필요하지 않습니다. , 사실 "i"도 필수는 아닙니다.
숫자 일치는 대소문자를 구분하나요? ?
"i" 또는 "g"를 추가하면 코드 속도가 느려집니다. 꼭 필요한 경우에만 ig를 추가하는 것이 좋습니다