我想匹配以大写字母开头的字符串,并且长度为< 70。
我试过这个正则表达式([A-Z][a-zA-Z\s\/\-]*\:?\'?)
来检查字符串是否以大写字母开头。它工作正常。但是为了检查长度,我改为(([A-Z][a-zA-Z\s\/\-]*\:?\'?){4,70})
并且它无效。
但是,我可以在length()
语句中使用if
字符串方法检查长度。这样做会使if
语句变得冗长。我想结合正则表达式本身的长度检查。我认为它可以在正则表达式中完成,但我不确定如何。
更新(忘记提及):字符串可以包含两个符号 - :,' ,只有两个符号中的一个将在字符串中为零或一次。
E.g:可接受的字符串:Looking forwards to an opportunity
,WORK EXPERIENCE:
,WORK EXPERIENCE-
,India's Prime Minister
不可接受的字符串:Work Experience::
,Manager's Educational Qualification-
,work experience:
,Education - 2014 - 2017
,Education (Graduation)
请帮帮我。
提前致谢。
答案 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/