正则表达式匹配订单号,例如 DE + 10 号或 AT +10 号
Regex matching order numbers e.g DE + 10 numbers or AT +10 numbers
我实际上是在尝试匹配字符串中的一些订单号。
字符串可能如下所示:
SDSFwsfcwqrewrPL0000018604ergerzergdsfa
或
FwsfcwqrewrAT0000018604ergerzergdsfaD
我需要匹配 "PL0000018604" 或 "AT0000018604"。
实际上我正在使用类似的东西并且它有效:
.?(AT[0-9]{10})|(BE[0-9]{10})|(FR[0-9]{10})|(IT[0-9]{10})
但是我们得到的命令前缀越多,表达式就会越长。
它始终是 2 个大写字符后跟 10 个数字,我想指定不同的大写字符。
有没有更短的版本?
感谢您的帮助:)
如果前缀必须是特定的,则没有什么办法可以使模式更短。但是,您可以收集表达式前面的所有前缀,这样您只需要有一次数字部分。
例如:
(AT|BE|FR|IT)[0-9]{10}
根据您的称呼方式,如果您需要将整个表达式捕获为一个组(相对于简单的 匹配 ,这是问题所问的),您可以在整个表达式周围添加括号。这不会改变匹配的内容,但会改变使用该表达式的任何函数返回的内容。
((AT|BE|FR|IT)[0-9]{10})
当然,如果您只想将数字部分也作为一个单独的组捕获,则可以添加更多括号
((AT|BE|FR|IT)([0-9]{10}))
我实际上是在尝试匹配字符串中的一些订单号。
字符串可能如下所示:
SDSFwsfcwqrewrPL0000018604ergerzergdsfa
或
FwsfcwqrewrAT0000018604ergerzergdsfaD
我需要匹配 "PL0000018604" 或 "AT0000018604"。
实际上我正在使用类似的东西并且它有效:
.?(AT[0-9]{10})|(BE[0-9]{10})|(FR[0-9]{10})|(IT[0-9]{10})
但是我们得到的命令前缀越多,表达式就会越长。 它始终是 2 个大写字符后跟 10 个数字,我想指定不同的大写字符。
有没有更短的版本?
感谢您的帮助:)
如果前缀必须是特定的,则没有什么办法可以使模式更短。但是,您可以收集表达式前面的所有前缀,这样您只需要有一次数字部分。
例如:
(AT|BE|FR|IT)[0-9]{10}
根据您的称呼方式,如果您需要将整个表达式捕获为一个组(相对于简单的 匹配 ,这是问题所问的),您可以在整个表达式周围添加括号。这不会改变匹配的内容,但会改变使用该表达式的任何函数返回的内容。
((AT|BE|FR|IT)[0-9]{10})
当然,如果您只想将数字部分也作为一个单独的组捕获,则可以添加更多括号
((AT|BE|FR|IT)([0-9]{10}))