RegEx匹配分数

时间:2014-06-09 03:10:59

标签: regex

我试图执行正则表达式以匹配分数。
用户将输入分数,例如,1 / 4,1 / 10 / 10/2等。
我已经测试了这个正则表达式并且它有效,但问题是当我输入10 / 2,20 / 5,30 / 3,40 / 53等等时它没有识别出这些分数。这是我的正则表达式你可以看到,它首先整理了整数,然后是斜杠,最后是斜杠后面的整数。

   var check_zero_value = str1.match(/[1-9]\/[1-9]/g);

   if(!check_zero_value1)
                {
                    return false;
                }

对此有何想法?

3 个答案:

答案 0 :(得分:3)

您可以使用此选项仅匹配分数:

/(?:[1-9][0-9]*|0)\/[1-9][0-9]*/g

或者这也匹配整数:

/(?:[1-9][0-9]*|0)(?:\/[1-9][0-9]*)?/g

在两种模式中,分子允许零,但分母不允许。

答案 1 :(得分:0)

要验证整数和分数,您可以这样做:

/[1-9][0-9]*(?:\/[1-9][0-9])*/g

链接至 Fiddler

如果您只想 分数:

/[1-9][0-9]*\/[1-9][0-9]*/g

链接至 Fiddler

答案 2 :(得分:0)

如果您想两者都可以使用

(([1-9]\d*\_)|([1-9]\d*\/[1-9]\d*)|([1-9]\d*\_[1-9]\d*\/[1-9]\d*))

以此,您可以验证是否收到以下情况

  • 整个部分,在我的情况下,我将字符“ _”用作整个部分和小数(2_,12312_,24353_,234_)之间的分隔符
  • 仅分数(9 / 86、75 / 645、3 / 21、2 / 5、4 / 35、7 / 8)
  • 整数和分数(5_9 / 86,666_75 / 645,23_3 / 21,1_2 / 5,2_4 / 35,6_7 / 8)

我使用GOLANG,您可以在github lcuriel/fractions

上看到我的仓库