数字范围的正则表达式和 -1

密码门

我需要一个正则表达式(Javascript),它允许 1 - 2048(不能为 0)之间的任何正数。但是它也应该允许一个负数:-1。

经过一些试验和错误,我想出了这个: ^(-[1]|[1-9]+)$

这允许负 1 和任何数字。但是作为正则表达式的新手,我对如何将数字范围限制为 2048 感到困惑?

最后,我知道并不总是推荐使用正则表达式。但是在这种情况下有几个条件(只有一个范围内的数字,没有特殊字符或空格,并且允许 -1),if 语句是否更可取?

卡里·斯沃夫兰

您可以使用以下正则表达式:

^(?:\-1|[1-9]\d{0,2}|1\d{3}|20[0-3]\d|204[0-8])$

尽管使用不使用正则表达式或使用简单正则表达式进行部分验证的语言工具可能更容易。

Javascript 演示

Javascript 的正则表达式引擎执行以下操作:

^               # match beginning of string
(?:             # begin a non-capture group
  \-1           # match '-1'
  |             # or
  [1-9]\d{0,2}  # match 1-999
  |             # or  
  1\d{3}        # match 1000-1999
  |             # or
  20[0-3]\d     # match 2000-2039
  |             # or
  204[0-8]      # match 2040-2048
)               # end non-capture group
$               # match end of string

然而,使用其他语言工具来确定字符串是否是整数的表示更容易。这分三步完成:

  • 确认字符串代表一个整数(也许使用一个简单的正则表达式)
  • 将字符串转换为整数
  • 确定整数是否等于允许的值

例如,在 Ruby 中,这可以通过以下代码片段来完成。

return false unless str.match?(/\A\-?\d+\z/)

x = Integer(str)

x == -1 || (1..2048).cover?(x)

作为奖励,剩下一个整数等价物。使用单个正则表达式时,如果需要整数,则需要额外的步骤。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

0-100数字范围正则表达式,不包括1和3

正则表达式,范围为1到100000(带小数)的数字

值的正则表达式范围从 1 - 1440(整数)

正则表达式(1 到 4 位数字和尽可能多的字符)

Javascript正则表达式:数字和字母(i)的组合,但1除外

用于限制 0.01 和 1 之间的数字的正则表达式 - JAVA

最多1个字母和14个数字的正则表达式

正则表达式 Word 至少 1 位数字和至少 2 个字母

正则表达式匹配 x 数字和 1 个字母

正则表达式中$ 1和$&之间的差异

正数和-1 Javascript的正则表达式

0的偶数和1的偶数的正则表达式

使用正则表达式查找较大数字中的所有 1 位和 2 位数字

正则表达式至少有1个字符和1个数字

$ 1正则表达式javascript

python正则表达式“ \ 1”

正则表达式,用于匹配3个字母和1-2位数字

什么是匹配除1、2和25外的所有数字的正则表达式?

使用正则表达式获取多个匹配项以1或2位数字,点和空格开头

带有0或1的正则表达式数字-后跟数字

正则表达式,用于1-31之间的数字以及数字之间的可选逗号

正则表达式错误:位置6处的字符范围错误8-1

如何使用正则表达式验证范围1-99?

正则表达式的范围是1-24,可选小数部分

用正则表达式匹配除1以外的任何数字

1线正则表达式可汇总txt文件中的数字

如何用数字进行正则表达式替换-例如$ 1 <number>

如何将正则表达式用于从 1 到 100 的罗马数字?

正则表达式允许1到18之间的数字与小数