非常模糊的正则表达式问题:始终在大写和小写字母之间迭代的字符串



我被困在一个正则表达式问题上,它说"制作一个正则表达式,与始终在大写和小写字母之间迭代的 10 个字符的字符串匹配。这个问题来自在线测验之类的东西,当你输入你的答案时,它会告诉你它是对还是错。我已经尝试了很多选项,但没有一个有效,因为这个问题对我来说有点模糊。

([a-z][A-Z]){5}

([a-z][A-Z]){5}|([A-Z][a-z]){5}

据我说,我相信这个问题只是希望我们匹配像这样的字符串 AaAaAaAaAaaAaAaAaAaA

我不确定您需要将这个正则表达式合并到什么代码中,并且 id 它应该得到正好 10 个字符,但你可能在正确的方向上。我认为您可以使用这个:

b(?:[a-z][A-Z]|[A-Z][a-z]){5}b

在线查看: https://regex101.com/r/bynUwn/1

您当前的模式匹配 5 乘以 2 个字符的重复,但没有特定的边界。您可以做的是使用单词边界b([A-Z][a-z]){5}b

另一种选择是使用锚点断言字符串的开始和结束,并使用积极的前瞻断言字符串的长度为 10:

^(?=.{10}$)[A-Z]?(?:[a-z][A-Z])+[a-z]?$

解释

  • ^ 字符串的开头
  • (?=[a-zA-Z]{10}$) 断言长度为 10 个字符 a-z
  • [A-Z]?匹配可选的大写字符
  • (?:[a-z][A-Z])+匹配 1+ 次小写字符后跟大写字符
  • [a-z]?匹配可选的小写字符
  • $ 字符串结尾

正则表达式演示

最新更新