>웹 프론트엔드 >JS 튜토리얼 >JavaScript_javascript 팁에서 RegExp 개체의 테스트 방법에 주의하세요.

JavaScript_javascript 팁에서 RegExp 개체의 테스트 방법에 주의하세요.

WBOY
WBOY원래의
2016-05-16 19:21:271083검색

JavaScript의 RegExp 개체는 정규식 관련 작업에 사용됩니다. 이 개체는 특정 문자열이 특정 패턴을 만족하는지 확인하는 메서드 테스트를 제공합니다.
오늘 문제가 발생했습니다. >

여기 있는 두 테스트 문자열은 모두 정규식의 패턴을 충족하고 true를 반환해야 합니다. 그러나 테스트 결과는 true, false입니다.

문제는 RegExp 개체가 상태를 저장하고 테스트 메서드 실행 중 특정 단계에서 상태 정보가 사용되기 때문에 오류가 발생한다는 것입니다.
(참고: RegExp 전역 개체에는 RegExp.$1...RegExp$9 등과 같은 몇 가지 정적 속성과 메서드가 있습니다.)

이 문제에 대한 해결책도 매우 간단합니다. 매번 정규 표현식을 다시 초기화합니다. 표현식 개체:


[Ctrl A 모두 선택 참고: 외부 Js를 도입해야 하는 경우 실행하려면 Refresh가 필요합니다.
]
제 생각에는 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를 추가하는 것이 좋습니다
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.