如何获得正则表达式匹配的有效部分

时间:2017-03-31 14:32:45

标签: javascript regex

我想测试一个用户字符串是否“确定为止”,因为它可能不是一个整体有效,但它是有效字符串的一个子集。

我有正则表达式^ [0-9] {4} - [0-9] {4} - [0-9] {4} - [0-9] $ 这样“1234-1234-5678-5678”有效

“1234-12”或甚至“1”与模式不匹配,但它是有效格式的有效子集,换句话说,输入到目前为止都是正确的。

有一种巧妙的方式可以做到这一点,而不是制作许多正则表达,周五。

4 个答案:

答案 0 :(得分:2)

不确定我是否理解你的问题,但我认为你想要这样的事情:

^([0-9]{4}-){1,3}[0-9]{1,4}$

<强> Working demo

这将匹配4位数的集合,并且最后一次设置为1到4位

enter image description here

您还可以使用以下方法缩短正则表达式:

^(\d{4}-){1,3}\d{1,4}$

答案 1 :(得分:0)

您可以使用一个最终正则表达式来验证您当前拥有的表单,并使用即时正则表达式来确保用户输入对每个子集都有效。

我的想法是([0-9] {1,4} - )+

答案 2 :(得分:0)

对于您的情况,这将检查为一种类型:

/^(\d(\d(\d(\d(-(\d(\d(\d(\d(-(\d(\d(\d(\d(-(\d)?)?)?)?)?)?)?)?)?)?)?)?)?)?)?)?$/

答案 3 :(得分:0)

此正则表达式将在您键入时匹配键的键,尽管它有点麻烦。

^([0-9]{1,4}|[0-9]{4}-[0-9]{0,4}|[0-9]{4}-[0-9]{4}-[0-9]{0,4}|[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{0,4})$

Here is a live example