gpt4 book ai didi

Java正则表达式最大长度与一个连字符

转载 作者:行者123 更新时间:2023-12-02 03:40:59 27 4
gpt4 key购买 nike

我需要根据给定条件验证输入,

- 总长度必须为 20 个字符-前五个位置必须是字母-剩余应该是数字,但必须存在一个连字符(-),该连字符只能出现在数字之间。我有像这样的正则表达式

([a-zA-Z]){5}[0-9]+([-]){15} 

但它也允许在末尾使用连字符,甚至接受不带连字符的情况。

最佳答案

你可以使用

^[a-zA-Z]{5}(?=[0-9-]{15}$)[0-9]+-[0-9]+$

请参阅 regex demo

详细信息:

  • ^ - 匹配字符串的开头
  • [a-zA-Z]{5} - 匹配 5 个字母
  • (?=[0-9-]{15}$) - 要求字符串的其余部分长度应为 15 个字符
  • [0-9]+-[0-9]+ - 1+ 数字后跟连字符,后跟 1+ 数字
  • $ - 字符串结尾(您可以替换为 \z 以排除字符串末尾最后一个换行符之前的匹配)

如果您使用.matches(),您可以省略外部 anchor 。

参见 Java test:

String pat = "[a-zA-Z]{5}(?=[0-9-]{15}$)[0-9]+-[0-9]+"; 
System.out.println("abcde123456-89012345".matches(pat)); // true
System.out.println("abcde-12345689012345".matches(pat)); // false
System.out.println("abcde12345689012345-".matches(pat)); // false
System.out.println("abcde12345689012345-12".matches(pat)); // false

关于Java正则表达式最大长度与一个连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36839935/

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