gpt4 book ai didi

regex - 我可以缩短这个正则表达式吗?

转载 作者:行者123 更新时间:2023-12-04 13:29:30 25 4
gpt4 key购买 nike

我需要检查字符串是否遵循特定的ID格式。

ID的格式如下:
aBcDe-fghIj-KLmno-pQRsT-uVWxy
由五个字母组成的五个字母大写或小写的序列,由一个短划线分隔。

我有以下有效的正则表达式:

string idFormat = "[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}";

请注意,没有结尾的破折号,但是ID中的所有块都遵循相同的格式。因此,我希望能够用正则表达式内的尾部破折号来表示四个块的序列,并避免重复。

我尝试了以下操作,但不起作用:
string idFormat = "[[a-zA-Z]{5}[-]{1}]{4}[a-zA-Z]{5}";

如何缩短此正则表达式并消除重复的部分?

确保每个块也不包含任何数字的最佳方法是什么?

编辑:

感谢您的答复,我现在了解了正则表达式中的分组。

我正在针对正则表达式运行一些测试,以下是相关的:

测试1: aBcDe-fghIj-KLmno-pQRsT-uVWxy测试2: abcde-fghij-klmno-pqrst-uvwxy
使用以下正则表达式,两个测试均通过:
^([a-zA-Z]{5}-){4}[a-zA-Z]{5}$

对于下一个正则表达式,测试1失败:
^([a-z]{5}-){4}[a-z]{5}$

有几个答案表明,使用a-z时可以省略A-Z,但是在这种情况下,它似乎不起作用。

最佳答案

如果您可以将正则表达式选项设置为不区分大小写,则可以将所有[a-zA-Z]替换为纯[a-z]。此外,[-]{1}可以写为-

应当使用()而不是[]进行分组(尽管您在指定字符集时正确使用了后者)。

根据上下文,您可能想输入分别与字符串的开头和结尾匹配的^...$,以验证整个字符串是否匹配(即没有多余的字符)。

在javascript中,如下所示:

/^([a-z]{5}-){4}[a-z]{5}$/i

关于regex - 我可以缩短这个正则表达式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3519549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com