我需要创建一个正则表达式,允许负数为1到24位数(如果是整数)或数字为1到24减去十进制数字(最多12位小数)。
有效数字的示例:
123456789012345678901234 123456789012.345678901234 -123456789012345678901234 -123456789012.345678901234
无效数字的示例:
1.12345678901234567890
我该怎么做?
答案 0 :(得分:3)
答案 1 :(得分:0)
这适用于您的示例:
^-?\d{2,12}\.?\d{1,12}$
答案 2 :(得分:0)
^-?(?:\d{0,24}|(?!.{26,})\d*\.\d{0,12})$
<强>解释强>
^ (?# assert start of string)
-? (?# match optional -)
(?: (?# start non-capturing group)
\d{0,24} (?# match up-to-24 digits)
| (?# OR)
(?!.{26,}) (?# negative lookahead assertion to prevent 26+ characters)
\d* (?# match 0+ digits)
\. (?# match . literally)
\d{0,12} (?# match 0-12 digits)
) (?# end non-capturing group)
$ (?# assert end of string)
我认为其他人并不是(?!.{26,})
断言。这用于替换小数。如果我们想将小数限制为12,并将整个数字位数限制为24 ..那么我们就不能在字符串中包含超过25个字符。