Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要匹配分数的RegExp_Regex - Fatal编程技术网

要匹配分数的RegExp

要匹配分数的RegExp,regex,Regex,我试图执行正则表达式来匹配分数 用户将输入一个分数,例如1/4、1/2、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) {

我试图执行正则表达式来匹配分数
用户将输入一个分数,例如1/4、1/2、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;
                }

有什么想法吗

要验证整数和分数,可以执行以下操作:

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

如果您只需要分数:

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

链接到

您可以使用此链接仅匹配分数:

/[1-9][0-9]*\/[1-9][0-9]*/g
/(?:[1-9][0-9]*|0)\/[1-9][0-9]*/g
或者,也可以使用此选项来匹配整数:

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

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

如果两者都需要,可以使用

(([1-9]\d*\_)|([1-9]\d*\/[1-9]\d*)|([1-9]\d*\_[1-9]\d*\/[1-9]\d*))
这样,您就可以验证是否收到以下情况

  • 整个部分,在我的例子中,我使用字符“u”作为整个部分和分数之间的分隔符(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看到我的回购协议,10、20、30、40都不是分数。如果你也想找到整数,把运算符和分母放在一个组中,使之成为可选的。是的,。我的意思是,。如果我输入10/2,20/10,。它不匹配。但当我输入21/2,14/4,。它是匹配的。@user3627265
[0-9]
在您的正则表达式中改为
/[1-9]\/[1-9]/g
像这样
/[0-9]\/[1-9]/g)
第二个适合我。我猜*是我在尝试时在正则表达式中丢失的一个。感谢第一个
*
在错误的位置,应该在
之前)
。目前它只匹配两位分母为什么要转义下划线?出于这个原因,我需要在整个部分和分数之间设置分隔符。我的问题是为什么要转义下划线?以避免混淆或强调它是下划线而不是空白。例如,当使用vim时,定义一个空格\\u s