Php Regex-如何验证一组由“"-&引用;?

Php Regex-如何验证一组由“"-&引用;?,php,regex,Php,Regex,我正试图弄清楚如何验证格式如下的数字:XXXX或XXXX-XXXX 我试过了 /^\d{4}(-{1}\d{4})?/i 但它只验证XXXX-XXXX格式,而不验证XXXX 提前感谢试试这个: /\d{4}(-\d{4})?/ 演示:试试这个: /\d{4}(-\d{4})?/ 演示:我试过这个: ^\d{4}(-\d{4})? 在这里: 您可以在第一个区域中写入正则表达式,并在第二个区域中测试数字 适用于1234和1234-1234(任何数字)。我试过这个: ^\d{4}(-\d{4}

我正试图弄清楚如何验证格式如下的数字:XXXX或XXXX-XXXX

我试过了

/^\d{4}(-{1}\d{4})?/i
但它只验证XXXX-XXXX格式,而不验证XXXX

提前感谢

试试这个:

/\d{4}(-\d{4})?/
演示:

试试这个:

/\d{4}(-\d{4})?/
演示:

我试过这个:

^\d{4}(-\d{4})?
在这里:

您可以在第一个区域中写入正则表达式,并在第二个区域中测试数字

适用于1234和1234-1234(任何数字)。

我试过这个:

^\d{4}(-\d{4})?
在这里:

您可以在第一个区域中写入正则表达式,并在第二个区域中测试数字


适用于1234和1234-1234(任何数字)。

执行验证时不需要捕获组:

^\d{4}(?:-\d{4})?$
^\/\ /\ /^\/\ /^^^
| | |  | | | | ||`-- end of string
| | |  | | | | |`-- previous is optional (non-capture group of `-` and 4 numbers 0-9)
| | |  | | | | `-- end of non-capture group
| | |  | | | `-- exactly 4 of previous (any number 0-9)
| | |  | | `-- any number 0-9
| | |  | `-- just `-`
| | |  `-- non-capture group
| | `-- exactly 4 of previous (any number 0-9)
| `-- any number 0-9
`-- start of string

执行验证时不需要捕获组:

^\d{4}(?:-\d{4})?$
^\/\ /\ /^\/\ /^^^
| | |  | | | | ||`-- end of string
| | |  | | | | |`-- previous is optional (non-capture group of `-` and 4 numbers 0-9)
| | |  | | | | `-- end of non-capture group
| | |  | | | `-- exactly 4 of previous (any number 0-9)
| | |  | | `-- any number 0-9
| | |  | `-- just `-`
| | |  `-- non-capture group
| | `-- exactly 4 of previous (any number 0-9)
| `-- any number 0-9
`-- start of string

您的正则表达式看起来是正确的(尽管
{1}
什么也不做,您可能也希望在字符串末尾使用
$
将表达式锚定到字符串的末尾)。你能多加一点你的代码吗?^而
i
什么都不做。如果只是数字,我们不需要关心他们的情况。顺便说一下,你的正则表达式。在末尾添加一个
$
,您的正则表达式看起来是正确的(尽管
{1}
什么都不做,您可能也希望在字符串末尾使用
$
将表达式锚定到字符串的末尾)。你能多加一点你的代码吗?^而
i
什么都不做。如果只是数字,我们不需要关心他们的情况。顺便说一下,你的正则表达式。在末尾添加一个
$
,你会发现:不,不是<代码>-仅在字符类(例如
[a-z]
)中是特殊的。不,不是
-
仅在字符类中是特殊的(例如
[a-z]
)。当然也没有必要不使用捕获组吗?我无法想象不使用一个正则表达式会有更好的性能,因为它必须经过额外的逻辑(尽管我可能错了)。不使用捕获组更正确,但也会使不理解正则表达式的人更复杂it@h2ooooooo:捕获时有额外的逻辑,而不是相反。看见不确定PHP是否也一样,但我认为是这样。当然也没有必要不使用捕获组吗?我无法想象不使用一个正则表达式会有更好的性能,因为它必须经过额外的逻辑(尽管我可能错了)。不使用捕获组更正确,但也会使不理解正则表达式的人更复杂it@h2ooooooo:捕获时有额外的逻辑,而不是相反。看见不确定PHP是否也是如此,但我认为是这样。