>  Q&A  >  본문

javascript - 12.5-20.5를 확인하기 위해 정규식을 작성할 때 항상 오류가 발생합니까?

필수 데이터 형식은 다음과 같습니다.
1
10
100
1-5
10-50
100-500
0.5
10.5
10.5-20
10.5-20.5
10-20.5

즉, 검증에 필요한 숫자의 크기에는 제한이 없고 부동 소수점 숫자가 있을 수도 있고 없을 수도 있고 "-"가 있을 수도 있고 없을 수도 있으며 소수점 이하 한 자리가 유지됩니다

다음은 제가 작성한 정규 표현식입니다:

다음 사본이 잘못되었습니다.

으아악

수정됨:

으아악

근데 왜 20.5555는 항상 참인가요?

typechotypecho2694일 전921

모든 응답(3)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-06-26 10:59:35

    /^d{1,}.?d?-?(d{1,})?.?d?$/匹配过程如下:
    首先d{1,}匹配的是"20";
    .?匹配".";
    d?匹配"5",?匹配了1次;
    -?匹配"",因为?匹配0或者1次,在这里匹配0次;
    (d{1,})?匹配"555",此时?匹配1次;
    .?d?匹配"",此时两个?都匹配0次;
    $ 문자열 끝과 일치하므로 "20.5555"가 일치할 수 있습니다.

    Update1:
    /^d{1,}.?d{1}?-?(d{1,})?.?d{1}?$/의 매칭 과정은 다음과 같습니다:

    1. d{1,} "20"과 일치;

    2. .? "."과 일치;

    3. d{1}?会首先尝试匹配一个数字,此时匹配"5",?1회 일치;

    4. -?会匹配"",此时?0회 일치함

    5. (d{1,})? "555"와 일치;

    6. .?匹配"",此时?는 ""와 일치합니다. 현재 ?는 0번 일치합니다.

    7. d{1}?는 ""와 일치하고, ?는 0번과 일치합니다. d{1}?匹配"",?匹配0次;
      d{1}表示数字重复一次,所以该正则和dd{1}는 숫자가 한 번 반복된다는 의미입니다. 이 정규식은 실제로 d와 동일하므로 업데이트된 정규식과 원래 정규식 사이에는 차이가 없습니다.

    참고: 처음에 작성했던 매칭 프로세스에 문제가 있었는데 지금은 업데이트되었습니다.

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-26 10:59:35

    으아악

    회신하다
    0
  • 高洛峰

    高洛峰2017-06-26 10:59:35

    ???정규식을 사용하는 이유

    회신하다
    0
  • 취소회신하다