我有取下列值窗体上的一个字段:-1,2-10,99

我的影片涉及的答案2-10业务规则。

我想写一个正则表达式匹配2-10不过的的99,和我有麻烦了。

在原始表达式:

^2|3|4|5|6|7|8|9|10$

失败,因为99被匹配(在技术上,两次)。此外,线boundries的东西我从来没有舒服。我在快报oberve不同的行为,从他们比我在其他地方(例如.NET)做的。在这种特定情况下,正则表达式被在的的JavaScript 生成。无论如何,快报似乎忽略它们(如果我把值括号:

^[2|3|4|5|6|7|8|9|10]$

^[2-9]$

“所有读出”或为一个范围,如果我指定的开口线/串收线/字符串中的字符(是的,我试图匹配10分开在第二种情况下存在)快报永远不会返回任何匹配

我知道,我知道。如果您使用正则表达式来解决问题,那么就有两个问题(可能他们就会开始邀请朋友过来,事情1和2的东西风格)。我不知道的以使用一个在这里;我可以切换到一个case语句。但是好像我应该能够在这里使用正则表达式,这似乎是一个合理的事情。我还在当谈到正则表达式漂亮的绿色;

有帮助吗?

解决方案

您需要为括号。我将进一步使用范围保持事情可读:

^([2-9]|10)$

其他提示

这显然是其中不应该使用正则表达式,但数值的评价的情况下:

var num = parseInt(aNumber, 10);
if (num >= 2 && num <= 10) {
    alert("Match found!");
}

周围的交替使用括号中,由于级联的优先级高于交替:

^(2|3|4|5|6|7|8|9|10)$

一个完整的javascript函数以匹配或者2虽然9,或10

<script type="text/javascript">
    function validateValue( theValue )
    {
        if( theValue.match( /^([2-9]{1}|10)$/ ) )
        {
            window.alert( 'Valid' );
        }
        else
        {
            window.alert( 'invalid' );
        }
        return false;
    }
</script>

在正则表达式被容易地扩展到包括所有的规则:

/^(-1|[2-9]|10|99)$/ // will match -1, 2-10, 99

编辑:我忘了提及你必须替换为自己的真/假情境逻辑。 EDIT2:添加丢失的圆括号到第二正则表达式

原来的表达失败的原因是因为你匹配^ 2,3,4,5,6,7,8,9,10 $。

尝试此正则表达式:^(2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10)$

此在线实用程序是在重新生成的用于数字范围非常好: http://utilitymill.com/utility/ Regex_For_Range 。对于范围2-10包容性,它给出了这样的表达:\b0*([2-9]|10)\b。如果你想省略前导0,采取了“0 *”的部分。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top