Javascript部分数字匹配

Javascript部分数字匹配,javascript,regex,Javascript,Regex,我试图在JS中创建部分正则表达式匹配。我想要实现的是,当用户在输入字段中输入某些内容时,JS总是在按键时对数字序列进行部分匹配,而不仅仅是在完成整个正则表达式匹配时 这就是正则表达式规则: ^[12][^1-6]\d{2}$ 当用户输入数字1或2时,这是正确匹配,但3不正确。接下来,当没有输入1到6之间的数字时,这也是正确的,最后,接下来的任何2个数字都是正确的。正如我所说的,现在只有当所有4个数字都输入时,正则表达式匹配才会完成 如何实现部分输入检查?嗯,最简单的解决方案是将可选组件包装到相

我试图在JS中创建部分正则表达式匹配。我想要实现的是,当用户在输入字段中输入某些内容时,JS总是在按键时对数字序列进行部分匹配,而不仅仅是在完成整个正则表达式匹配时

这就是正则表达式规则:

^[12][^1-6]\d{2}$
当用户输入数字1或2时,这是正确匹配,但3不正确。接下来,当没有输入1到6之间的数字时,这也是正确的,最后,接下来的任何2个数字都是正确的。正如我所说的,现在只有当所有4个数字都输入时,正则表达式匹配才会完成


如何实现部分输入检查?

嗯,最简单的解决方案是将可选组件包装到相应的
(?:)?
构造中。实际上,您有两个可选组件,因此需要考虑这一点

结果看起来像

^[12](?:[^1-6]\d{0,2})?$
。。。因为您必须同时匹配“2x”、“2x1”和“2x11”,所以看起来。)因此,
{0,2}
量词

问题显然是,您不能使用单个正则表达式来检查用户是否已完成向字段中输入某些值。换句话说,如果您希望“中间”
1
匹配,但得到的
1
不匹配,那么,使用单个正则表达式检查是不可能的。)

您可以“或”您的正则表达式,但这意味着重复:

^([12]|[12][^1-6]|[12][^1-6]\d{2})$
要分解这一点:

^      From the start of the string / line
       match either
[12]   The numbers 1 or 2
|      or
[12]   The numbers 1 or 2
       followed by
[^1-6] Any character which is not the numbers 1 through 6
|      or
[12]   The numbers 1 or 2
       followed by
[^1-6] Any character which is not the numbers 1 through 6
       followed by
\d     Any number
{2}    repeated two times
$      followed by the end of the string / line
将匹配以下任何一项:

1
2
1N
2N
1NXX
2NXX
其中,
N
是不是数字1到6的任何东西,
X
是任何数字


注意:如果您真的只想匹配正则表达式第二部分中的数字0和7-9,只需将
[^1-6]
更改为
[07-9]

即可,如果您想匹配以某物开头的字符串,只需从regexp中删除
$
2x
应该是有效的匹配项?您确定第二个字符不应该是1、2、3、4、5或6吗?你真的想要一个空格、换行符、字符、或其他字符吗?在这种情况下,使用
^[12]([^1-6]\d{0,2})就足够了。$
但是我认为niksy想要
^[12]([1-6]\d{0,2})$
。是的,就是这样,后来我想使用
{0,2}
量词,但非捕获组是缺少的元素。谢谢是的,这是一种方法,它可以工作,只需要一个小的编辑-quantifier
{0,2}
来匹配从0到2的任何数字范围。谢谢