正则表达式以大写字母开头,长度为< 70

时间:2017-05-30 06:38:33

标签: java regex string

我想匹配以大写字母开头的字符串,并且长度为< 70。

我试过这个正则表达式([A-Z][a-zA-Z\s\/\-]*\:?\'?)来检查字符串是否以大写字母开头。它工作正常。但是为了检查长度,我改为(([A-Z][a-zA-Z\s\/\-]*\:?\'?){4,70})并且它无效。

但是,我可以在length()语句中使用if字符串方法检查长度。这样做会使if语句变得冗长。我想结合正则表达式本身的长度检查。我认为它可以在正则表达式中完成,但我不确定如何。

更新(忘记提及):字符串可以包含两个符号 - ' ,只有两个符号中的一个将在字符串中为零或一次。

E.g:可接受的字符串:Looking forwards to an opportunityWORK EXPERIENCE:WORK EXPERIENCE-India's Prime Minister

不可接受的字符串:Work Experience::Manager's Educational Qualification-work experience:Education - 2014 - 2017Education (Graduation)

请帮帮我。

提前致谢。

5 个答案:

答案 0 :(得分:2)

你肯定需要锚点和外观

(?=^[^-':\n]*[-':]{0,1}[^-':\n]*$)^[A-Z][-':\w ]{4,70}$

因此,将匹配5-71个字符之间的字符串,请参阅a demo on regex101.com。此外,它会检查是否存在零个或一个特殊字符(借助于外观,即)。

答案 1 :(得分:2)

我会在您的正则表达式中添加^$

^[A-Z].{,69}$

应该有效。这意味着:

  • ^字符串的开头
  • [A-Z]任何首都角色(无论如何都是英文)
  • .{0,69}最多69个其他角色
  • $字符串结尾

总长度最多为70个字符......

答案 2 :(得分:1)

为什么if陈述会很长?

    String str = "Scary";

    if (str.length() < 70 && str.charAt(0) >= 'A') {

    }

答案 3 :(得分:1)

在正则表达式的开头指定一个外观断言,断言它可能包含4到70个字符:

(?=.{4,70}$)

你会这样写:

String regex = "(?=.{4,70}$)[A-Z][a-zA-Z\\s\\/\\-]*\\:?\\'?";

答案 4 :(得分:-1)

工作正则表达式=

/\A^[A-Z][A-Za-z]*\z/