我想要捕获任何大于0的数字,从0.01到999,其中.01也是可以接受的.
^([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])
Run Code Online (Sandbox Code Playgroud)
应该匹配:(如果十进制存在,最多3个数字之前和之后2个.)
.01
.1
0.01
0.1
1
10
10.1
10.11
105.1
999.99
88.00
Run Code Online (Sandbox Code Playgroud)
应该失败:
12345678.54
00564.5412
00.451
1.
,25
..25
0025
01
00,25
0
.0
0.001
999.001
e123.12
1000
Run Code Online (Sandbox Code Playgroud)
http://regex101.com/r/qZ5lC6/1 - .x并限制可选小数之前和之后的字符是麻烦的地方.
根据您发布的内容使用此模式
^(?=.*[1-9])(?!0\d)(\d{0,3}(?:\.\d{1,2})?)$
Run Code Online (Sandbox Code Playgroud)
^ Start of string/line
(?= Look-Ahead
. Any character except line break
* (zero or more)(greedy)
[1-9] Character Class [1-9]
) End of Look-Ahead
(?! Negative Look-Ahead
0 "0"
\d <digit 0-9>
) End of Negative Look-Ahead
( Capturing Group \1
\d <digit 0-9>
{0,3} (repeated {0,3} times)
(?: Non Capturing Group
\. literal "."
\d <digit 0-9>
{1,2} (repeated {1,2} times)
) End of Non Capturing Group
? (zero or one)(greedy)
) End of Capturing Group \1
$ End of string/line
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
855 次 |
| 最近记录: |