Javascript 验证输入是否为有效分数
需要验证输入框中的输入是否为三种格式之一的正分数:Javascript 验证输入是否为有效分数,javascript,regex,regex-negation,Javascript,Regex,Regex Negation,需要验证输入框中的输入是否为三种格式之一的正分数: 整数-1,215,15。。。等等 分数-1/2、3/4、5/16等 整数和分数-1 1/2,3 5/15,12 5/5。。。 等等 但拒绝2 1/2、2 a/2或15/32等 我甚至想不出一个接近的答案。我在想这件事,但还没想好/\d{0,2}(\s\d{1,2}\/\d{1,2})这检查两个整数是否由/字符分隔,前面是带空格的可选整数。它还包括一个单独的检查,将匹配一个单独的整数 ^(?:\d+ )?\d+\/\d+$|^\d+$ 您可以使
我甚至想不出一个接近的答案。我在想这件事,但还没想好
/\d{0,2}(\s\d{1,2}\/\d{1,2})
这检查两个整数是否由/
字符分隔,前面是带空格的可选整数。它还包括一个单独的检查,将匹配一个单独的整数
^(?:\d+ )?\d+\/\d+$|^\d+$
您可以使用|匹配一个数字、一个分数、两个数字或一个数字和一个分数
如果要匹配1或2位数字,可以使用\d{1,2}
而不是\d+
^\d+(?:\/\d+$|(?: \d+(?:\/\d+)?)?)$
字符串的开头^
匹配1+个数字\d+
非捕获组(?:
只匹配一个分数(\/\d+$
和1+个数字,并断言字符串的结尾)/
或|
非捕获组(?:
匹配空格、1+位和可选的\d+(?:/\d+)
和1+位/
关闭非捕获组并将其设置为可选)?
关闭非捕获组)
$
- 一个捕获组:()
- ^开始
- 美元结束
- \当处理下面的c时,s代表空格(1+)
- |对于3个组合:
- a) 整数+分数
- b) 分数
- c) int
^(\d+\s+(\d+)\/(\d+)|(\d+)\/(\d+)|\d+)$
然后,您必须查看以下任一项:
- 如果只处理分数(b),则捕获第4组和第5组,或
- 如果处理整数加分数(a),则捕获第2组和第3组
^(\(d+)\s+(\d+)\/(\d+)|(\d+)\/(\d+)|\d+)$
这将分流上面的捕获组2->3,3->4,4->5,5->6。。捕获组2现在将为您提供场景a)的整数。
捕获组1将是场景c)的整数
你可以看到它的作用。为什么要创建一个非捕获组,而不允许空间?该组要允许空间,但前提是分数前面有一个整数。2 15应该像1上的那样吗?
^(\(d+)\s+(\d+)\/(\d+)|(\d+)\/(\d+)|\d+)$