1

例如,我想比较0-91和0-93,在我使用的逻辑中,0-93比0-91大,因为我只查看0-后面的数字,即91和93。基本上,我正在构建一个表单,它检查数字的范围,但在表单中,可以键入数字,例如91和93,但它们通常键入为0-91和0-93,我如何编写javascript逻辑,以便在比较两个数字时忽略0-?

基本上将0-91和0-93转换为整数91和93,然后进行比较。

2
  • 1
    数字总是在表格中吗0倍? 评论 2013年1月31日19:30
  • “0-93”匹配(/0-(\d+)/)[1]?
    – 德里克
    评论 2013年1月31日19:33

2个答案2

重置为默认值
1

一种方法是:

var a='0-91',b=“0-93”,max=数学最大值(例如a.slice(2),b.slice(2)),//max2=数学最大值(a.substr(-2),b.subtr(-2));//如果a=“91”和b=“93”,则有效

希望这有帮助

9
  • 这将产生91和93。。它们是整数类型还是字符串类型? 评论 2013年1月31日19:33
  • a.slice(2)仍然是一个“字符串”,但parseInt(a.slie(2),10);将是一个“数字” 评论 2013年1月31日19:35
  • 1
    当用户只输入93时,此解决方案将不起作用。您可以使用正则表达式解析字符串。大致如下:“0-91”匹配(/[-]?(\d*)$/).pop()将返回“93”。
    – 斯文
    评论 2013年1月31日19:52
  • 编辑了我的答案,它适用于substr(-2);但使用正则表达式可以处理2个以上的数字。 评论 2013年1月31日19:55
  • @斯文我明白了。。所以我应该只对93或0-93使用.match(/[-]?(\d*)$/).pop()?? 评论 2013年1月31日19:56
0

如果您希望支持:

  • 范围或无范围(“0-93”或“93”)
  • 或多或少的数字(“0-999”或“9”)

这是解决问题的一种方法:

函数号从输入(值){return Number(value.match(/[-]?(\d*)$/).pop());}数学最大值(数字从输入(“91”),数字从输入值(“0-93”));
  • 非常感谢Sven,所以这将控制91或0-93。。但它们仍然是字符串?要使它们成为整数,我必须在函数parseInt(Number(value.match(/[-]?(\d*)$/).pop())? 评论 2013年1月31日20:26
  • JavaScript中没有整数,只有数字!你可以用测试这个1.0 === 1.解析Int也会返回一个数字(昏迷消失后的所有内容)。
    – 斯文
    评论 2013年1月31日20:32
  • parseInt(数字(…))是多余的。只需使用解析Int.
    – 斯文
    评论 2013年1月31日20:34

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.