필수 데이터 형식은 다음과 같습니다.
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는 항상 참인가요?
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}?$/
의 매칭 과정은 다음과 같습니다:
d{1,}
"20"과 일치;
.?
"."과 일치;
d{1}?
会首先尝试匹配一个数字,此时匹配"5",?
1회 일치;
-?
会匹配"",此时?
0회 일치함
(d{1,})?
"555"와 일치;
.?
匹配"",此时?
는 ""와 일치합니다. 현재 ?
는 0번 일치합니다.
d{1}?
는 ""와 일치하고, ?
는 0번과 일치합니다. d{1}?
匹配"",?
匹配0次;d{1}
表示数字重复一次,所以该正则和d
d{1}
는 숫자가 한 번 반복된다는 의미입니다. 이 정규식은 실제로 d
와 동일하므로 업데이트된 정규식과 원래 정규식 사이에는 차이가 없습니다.
참고: 처음에 작성했던 매칭 프로세스에 문제가 있었는데 지금은 업데이트되었습니다.