Я бы подумал, что это будет довольно распространено, но не нашел решения
Я хотел бы, чтобы регулярное выражение терпело неудачу при заданном количестве значащих цифр (Max), но проходило меньше, чем Max. Я хотел бы, чтобы он работал как с точками, так и с запятыми (французскими) десятичными разделителями.
Таким образом, для 15 значащих цифр должно пройти:
0
0,00
1
-1
1,23456789012345
10,2345678901234
12,3456789012345
-123,4
-12,34< br> -1,33
-1,33
-123456789012345
-1234567890123450
-12345678901234,50
12345678901234,50
123456789012345,00
// should fail:
-1234567890123456
-12345678901234.56
12345678901234.56
123456789012345.60
1.234567890123456
12.34567890123456
123456789012340.6
123456789012300.67
123456789012300000000000.67
10000000000010000000001000010000000001.22
Я знаю, что мне нужно использовать негативный взгляд, и я до сих пор был близок к этому:
^(?!(?:.*?[1-9]){15,})([-+]?\s*\d+[\.\,]?\d*?)$
https://regex101.com/r/hQ1rP0/218
но вы можете видеть, что последние несколько все еще проходят, какие-нибудь указатели?
-1234567890123450
состоит из 16 цифр и является допустимым, в то время как-1234567890123456
также состоит из 16 цифр и ошибочно - person ctwheels   schedule 19.10.20170
s перед десятичной дробью являются значимыми. - person ctwheels   schedule 19.10.2017^-?(?=\d{1,15}(?:[.,]0+)?$|(?:(?=.{1,16}0*$)(?:\d+[.,]\d+))).+$
, с вашей странной логикой значащего числа, однако^-?(?=\d{1,15}(?:[.,]0+)?0*$|(?:(?=.{1,16}0*$)(?:\d+[.,]\d+))).+$
- person ctwheels   schedule 19.10.2017