我需要一个正则表达式来匹配分数和混合数字,但不允许任何不同的值(整数,分子,分母)为零。为什么.NET匹配我的正则表达式,但Javascript不?
我发现一个接近我所需要的并且修改了一下的解决方案。
然后,我在使用.NET正则表达式引擎的RegexHero上对它进行了测试。
正如我期望的,正则表达式匹配“1 1/2”,但是当我用.test()函数在Javascript中尝试相同的正则表达式时,它与它不匹配。
我怀疑它与每个引擎如何处理空白有关,但我不确定。任何想法为什么它匹配一个而不是另一个?
正则表达式是:
^([1-9][0-9]*/[1-9][0-9]*|[1-9][0-9]*(\s[1-9][0-9]*/[1-9][0-9]*)?)$
编辑:
我想贾森的建议,但我的测试仍然失败。
var ingredientRegex = /^([1-9][0-9]*\/[1-9][0-9]*|[1-9][0-9]*(\\s[1-9][0-9]*\/[1-9][0-9]*)?)$/;
function isValidFraction(value) {
return ingredientRegex.test(value);
}
它正在用茉莉花进行测试。
it("should match a mixed number", function() {
expect(isValidFraction("2 1/2")).toBe(true);
});
SOLUTION:
它现在的工作。我需要逃避“/”字符,但是我不需要像贾森建议的那样逃避“\ s”。
对我的作品? http://refiddle.com/refiddles/5452804275622d61533e0000 – Mathletics 2014-10-30 18:15:38
你可以发布你在JavaScript中测试它的代码吗? – 2014-10-30 18:18:01
你是否需要逃避你的'/'也许?你怎么称呼它_exactly_在JavaScript中? – Wrikken 2014-10-30 18:18:25