正则表达式为有效的32位带符号整数

波希米亚风格

我敢肯定,这个网站上实际上还没有回答。为了一劳永逸,那是一个数字字符串,它是在32位有符号整数的范围,在范围匹配的最小的正则表达式-21474836482147483647

必须使用正则表达式进行验证-这是我唯一可用的选项。

我努力了

\d{1,10}

但我不知道如何将其限制在有效数字范围内。


为了帮助使用正则表达式进行开发,它应匹配:

-2147483648
-2099999999
-999999999
-1
0
1
999999999
2099999999
2147483647

它不应该匹配:

-2147483649
-2200000000
-11111111111
2147483648
2200000000
11111111111

我已经建立了一个在线现场演示(在rubular上),上面有我的尝试和上面的测试用例。


注意:可以使用最短的正则表达式。正则表达式的效率将不予考虑(除非有最短长度的并列关系)。

普什莫

我真的希望这只是一个难题,在现实世界中没有人会使用正则表达式来解决这个问题。正确的解决方案是将数字从字符串转换为数字类型,例如BigInteger这应该让我们检查采用适当的方法或运营商的范围,比如compareTo><


为了使生活更轻松,您可以使用此页面(无效链接)来生成范围的正则表达式。所以范围的正则表达式0-2147483647看起来像

\b([0-9]{1,9}|1[0-9]{9}|2(0[0-9]{8}|1([0-3][0-9]{7}|4([0-6][0-9]{6}|7([0-3][0-9]{5}|4([0-7][0-9]{4}|8([0-2][0-9]{3}|3([0-5][0-9]{2}|6([0-3][0-9]|4[0-7])))))))))\b

(更友好的方式)

\b(
 [0-9]{1,9}|
1[0-9]{9}|
2(0[0-9]{8}|
  1([0-3][0-9]{7}|
       4([0-6][0-9]{6}|
            7([0-3][0-9]{5}|
                 4([0-7][0-9]{4}|
                      8([0-2][0-9]{3}|
                           3([0-5][0-9]{2}|
                                6([0-3][0-9]|
                                     4[0-7]
)))))))))\b

和范围0-2147483648

\b([0-9]{1,9}|1[0-9]{9}|2(0[0-9]{8}|1([0-3][0-9]{7}|4([0-6][0-9]{6}|7([0-3][0-9]{5}|4([0-7][0-9]{4}|8([0-2][0-9]{3}|3([0-5][0-9]{2}|6([0-3][0-9]|4[0-8])))))))))\b

所以我们可以将这些范围组合起来并写成

range of 0-2147483647 OR "-" range of 0-2147483648

这会给我们

\b([0-9]{1,9}|1[0-9]{9}|2(0[0-9]{8}|1([0-3][0-9]{7}|4([0-6][0-9]{6}|7([0-3][0-9]{5}|4([0-7][0-9]{4}|8([0-2][0-9]{3}|3([0-5][0-9]{2}|6([0-3][0-9]|4[0-7])))))))))\b|-\b([0-9]{1,9}|1[0-9]{9}|2(0[0-9]{8}|1([0-3][0-9]{7}|4([0-6][0-9]{6}|7([0-3][0-9]{5}|4([0-7][0-9]{4}|8([0-2][0-9]{3}|3([0-5][0-9]{2}|6([0-3][0-9]|4[0-8])))))))))\b

[编辑]

由于Bohemian在他的评论中注意到,最终的正则表达式可以采用形式,-?regex1|-2147483648因此这里的简短版本要少一些(也更改[0-9]\d

^-?(\d{1,9}|1\d{9}|2(0\d{8}|1([0-3]\d{7}|4([0-6]\d{6}|7([0-3]\d{5}|4([0-7]\d{4}|8([0-2]\d{3}|3([0-5]\d{2}|6([0-3]\d|4[0-7])))))))))$|^-2147483648$

如果您将在JavaString#matches(regex)方法的每一行中使用它,您也可以跳过^删除$部分,因为它们将被自动添加以确保整个字符串与正则表达式匹配。

我知道这个正则表达式非常丑陋,但仅说明了为什么正则表达式不是范围验证的好工具

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式两位十进制与。最后有效

来自分类Dev

有效的域名正则表达式

来自分类Dev

更有效的正则表达式

来自分类Dev

有效的正则表达式?

来自分类Dev

编写正则表达式以捕获有符号整数

来自分类Dev

正则表达式模式为有效文件名

来自分类Dev

Javascript:RegExp 模式未选择为有效的正则表达式

来自分类Dev

将简单表达式映射到有效的正则表达式

来自分类Dev

expr:正则表达式未检测到有效表达式

来自分类Dev

正则表达式有效数字带千位分隔符

来自分类Dev

正则表达式有效数字带千位分隔符

来自分类Dev

正则表达式| 模式属性值不是有效的正则表达式:未捕获的SyntaxError:无效的正则表达式

来自分类Dev

可以测试字符串是否为有效Firebase密钥的正则表达式是什么?

来自分类Dev

如何检查字符串在Python中是否为有效的正则表达式?

来自分类Dev

正则表达式g-检查电子邮件地址有效或值为N / A

来自分类Dev

正则表达式在仅应显示10位数字的情况下将电话号码显示为有效的9位和10位数字

来自分类Dev

有没有办法使此正则表达式更有效?

来自分类Dev

带符号和无符号整数的表达式

来自分类Dev

正则表达式匹配给定路径的所有有效URL变体

来自分类Dev

正则表达式拼图找到所有有效的字符串组合

来自分类Dev

正则表达式包括整数和以下符号 % , - 。$

来自分类Dev

正则表达式标记全名+可选中间名(不带符号)

来自分类Dev

最多4位偶数整数的正则表达式

来自分类Dev

仅带符号的整数的“带符号的和无符号的整数表达式之间的比较”

来自分类Dev

在python中使用正则表达式检查表达式是否有效

来自分类Dev

正则表达式 - 在行首或特定字符之后匹配的最有效表达式

来自分类Dev

正则表达式中连字符的这种用法有效吗?

来自分类Dev

使用正则表达式检查字符串以获取有效的CSS

来自分类Dev

正则表达式用于最后一个有效括号之间的文本

Related 相关文章

  1. 1

    正则表达式两位十进制与。最后有效

  2. 2

    有效的域名正则表达式

  3. 3

    更有效的正则表达式

  4. 4

    有效的正则表达式?

  5. 5

    编写正则表达式以捕获有符号整数

  6. 6

    正则表达式模式为有效文件名

  7. 7

    Javascript:RegExp 模式未选择为有效的正则表达式

  8. 8

    将简单表达式映射到有效的正则表达式

  9. 9

    expr:正则表达式未检测到有效表达式

  10. 10

    正则表达式有效数字带千位分隔符

  11. 11

    正则表达式有效数字带千位分隔符

  12. 12

    正则表达式| 模式属性值不是有效的正则表达式:未捕获的SyntaxError:无效的正则表达式

  13. 13

    可以测试字符串是否为有效Firebase密钥的正则表达式是什么?

  14. 14

    如何检查字符串在Python中是否为有效的正则表达式?

  15. 15

    正则表达式g-检查电子邮件地址有效或值为N / A

  16. 16

    正则表达式在仅应显示10位数字的情况下将电话号码显示为有效的9位和10位数字

  17. 17

    有没有办法使此正则表达式更有效?

  18. 18

    带符号和无符号整数的表达式

  19. 19

    正则表达式匹配给定路径的所有有效URL变体

  20. 20

    正则表达式拼图找到所有有效的字符串组合

  21. 21

    正则表达式包括整数和以下符号 % , - 。$

  22. 22

    正则表达式标记全名+可选中间名(不带符号)

  23. 23

    最多4位偶数整数的正则表达式

  24. 24

    仅带符号的整数的“带符号的和无符号的整数表达式之间的比较”

  25. 25

    在python中使用正则表达式检查表达式是否有效

  26. 26

    正则表达式 - 在行首或特定字符之后匹配的最有效表达式

  27. 27

    正则表达式中连字符的这种用法有效吗?

  28. 28

    使用正则表达式检查字符串以获取有效的CSS

  29. 29

    正则表达式用于最后一个有效括号之间的文本

热门标签

归档