正则表达式匹配2-10,而不是99
-
22-08-2019 - |
题
我有取下列值窗体上的一个字段:-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 *”的部分。