我被困在一个正则表达式问题上,它说"制作一个正则表达式,与始终在大写和小写字母之间迭代的 10 个字符的字符串匹配。这个问题来自在线测验之类的东西,当你输入你的答案时,它会告诉你它是对还是错。我已经尝试了很多选项,但没有一个有效,因为这个问题对我来说有点模糊。
([a-z][A-Z]){5}
([a-z][A-Z]){5}|([A-Z][a-z]){5}
据我说,我相信这个问题只是希望我们匹配像这样的字符串 AaAaAaAaAa
或aAaAaAaAaA
我不确定您需要将这个正则表达式合并到什么代码中,并且 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]?
匹配可选的小写字符 -
$
字符串结尾
正则表达式演示