정규 표현식 /\ [1-9 \] \\ d \*$ /를 사용할 때 -1이 성공한 것으로 판단되는 이유는 무엇입니까?
정규 표현 일치에 대한 오해와 수정
이 기사는 정규 표현식의 문자열 일치에서 일반적인 문제에 대해 설명합니다. 정규 표현식 /[1-9]\d*$/
"-1"을 성공적인 경기로 결정하는 이유는 무엇입니까? 이 문제를 해결하는 방법.
코드를 분석합시다.
함수 ispositiveInteger (str) { const regex = /[1-9] \ d*$ /; return regex.test (str); } console.log (ispositiveinteger ( "-1")); // false가 될 것으로 예상됩니다 console.log (ispositiveinteger ( "1")); // true를 출력합니다
isPositiveInteger
함수는 입력 문자열이 양의 정수인지 여부를 결정하려고합니다. 그러나 "-1"을 긍정적 인 정수로 잘못 인식합니다.
문제는 정규 표현의 구조 /[1-9]\d*$/
입니다. 일치합니다 :
-
[1-9]
: 1과 9 사이의 숫자. -
\d*
: 0 이상 (0-9). -
$
: 문자열의 끝.
"-1"이 입력되면 정규 표현식은 문자열 끝에서 "1"만 일치하여 [1-9]
조건을 만족 시키므로 true
반환합니다. 문자열의 시작 부분에 "-"기호를 무시합니다.
양수 정수와 일치하려면 정규 표현식이 문자열의 시작 부분에서 일치하고 음수 부호를 포함하지 않도록해야합니다. 이것은 정규 표현식의 시작 부분에 ^
기호를 추가하여 수행 할 수 있습니다. 즉, 일치는 문자열의 ^
위치에서 시작해야합니다. 완전한 수정 된 정규 표현식은 다음과 같아야합니다. ^[1-9]\d*$
수정 코드 :
함수 ispositiveInteger (str) { const regex = /^[1-9] \ d*$ /; return regex.test (str); } console.log (ispositiveinteger ( "-1")); // false를 출력합니다 console.log (ispositiveinteger ( "1")); // true를 출력합니다 console.log (ispositiveinteger ( "123")); // true를 출력합니다 console.log (ispositiveinteger ( "0")); // false를 출력합니다
이제 isPositiveInteger
함수는 이전의 잘못된 일치를 피하고 양수 정수를 정확하게 판단 할 수 있습니다. 핵심은 정기적 인 표현에서 ^
및 $
앵커의 역할과 일치하는 위치의 정확성을 보장하는 데있어서의 중요성을 이해하는 것입니다.
위 내용은 정규 표현식 /\ [1-9 \] \\ d \*$ /를 사용할 때 -1이 성공한 것으로 판단되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

상위 카테고리 아카이브 페이지에 자식 카테고리를 표시하는 방법을 알고 싶습니까? 분류 아카이브 페이지를 사용자 정의 할 때 방문자에게 더 유용하기 위해이를 수행해야 할 수도 있습니다. 이 기사에서는 부모 카테고리 아카이브 페이지에 자식 카테고리를 쉽게 표시하는 방법을 보여줍니다. 하위 범주가 부모 카테고리 아카이브 페이지에 나타나는 이유는 무엇입니까? 부모 카테고리 아카이브 페이지에 모든 자식 카테고리를 표시하면 방문자에게 덜 일반적이고 유용 할 수 있습니다. 예를 들어, 책에 대한 WordPress 블로그를 실행하고 "테마"라는 분류법을 가지고 있다면 독자가 할 수 있도록 "소설", "논픽션"과 같은 하위 세포 체질을 추가 할 수 있습니다.

가상 통화 가격 상승의 요인은 다음과 같습니다. 1. 시장 수요 증가, 2. 공급 감소, 3. 긍정적 인 뉴스, 4. 낙관적 시장 감정, 5. 거시 경제 환경; 감소 요인에는 다음이 포함됩니다. 1. 시장 수요 감소, 2. 공급 증가, 3. 부정적인 뉴스의 파업, 4. 비관적 시장 감정, 5. 거시 경제 환경.

배치 쿼리에 redistemplate을 사용할 때 반환 값이 비어있는 이유는 무엇입니까? 배치 쿼리 작업에 redistemplate를 사용하는 경우 반환 된 결과가 발생할 수 있습니다 ...

스프링 프로젝트 스타트 업에서 원형 종속성의 무작위성을 이해하십시오. Spring Project를 개발할 때는 프로젝트 시작시 원형 종속성으로 인한 무작위성에 직면 할 수 있습니다 ...

RedistemPlate.opSforList (). LeftPop ()가 전달 숫자를 지원하지 않는 이유와 관련하여. Redis를 사용할 때 많은 개발자가 문제가 발생합니다. 왜 Redistempl ...

MySQL에서는 altertabletable_nameaddcolumnnew_columnvarchar (255) 이후에 필드를 추가하여 altertabletable_namedropcolumncolumn_to_drop을 사용하여 필드를 삭제합니다. 필드를 추가 할 때는 쿼리 성능 및 데이터 구조를 최적화하기위한 위치를 지정해야합니다. 필드를 삭제하기 전에 작업이 돌이킬 수 없는지 확인해야합니다. 온라인 DDL, 백업 데이터, 테스트 환경 및 저하 기간을 사용하여 테이블 구조 수정은 성능 최적화 및 모범 사례입니다.

Laravel과 YII의 주요 차이점은 설계 개념, 기능적 특성 및 사용 시나리오입니다. 1. Laravel은 개발의 단순성과 즐거움에 중점을두고 Eloquentorm 및 Artisan 도구와 같은 풍부한 기능을 제공하며 빠른 개발 및 초보자에게 적합합니다. 2.YII는 성능과 효율성을 강조하고, 고 부하 애플리케이션에 적합하며, 효율적인 Activerecord 및 캐시 시스템을 제공하지만 가파른 학습 곡선이 있습니다.

JavaScript가 일일 프로그래밍에서 사용자 컴퓨터 하드웨어 정보를 얻을 수없는 이유에 대한 토론 많은 개발자가 JavaScript를 직접 얻을 수없는 이유에 대해 궁금합니다 ...
