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

Java 正则表达式以大写字母开头,长度为<;70,java,regex,string,Java,Regex,String,我想匹配一个以大写字母开头且长度小于70的字符串 我尝试了这个正则表达式([A-Z][A-zA-Z\s\/\-]*\:?\?)来检查字符串是否以大写字母开头。它工作得很好。但是为了检查长度,我改为(([A-Z][A-zA-Z\s\/\-]*\:?\'?){4,70}),它不起作用 不过,我可以使用if语句中的length()字符串方法检查长度。这样做会使if语句冗长。我想在正则表达式中结合长度检查。我认为这可以在正则表达式中实现,但我不确定如何实现 更新(忘记提及):字符串可以有两个符号中的任意

我想匹配一个以大写字母开头且长度小于70的字符串

我尝试了这个正则表达式
([A-Z][A-zA-Z\s\/\-]*\:?\?)
来检查字符串是否以大写字母开头。它工作得很好。但是为了检查长度,我改为
(([A-Z][A-zA-Z\s\/\-]*\:?\'?){4,70})
,它不起作用

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

更新(忘记提及):字符串可以有两个符号中的任意一个-,,并且两个符号中只有一个会在字符串中出现零次或一次

例如:可接受字符串:
期待机会
工作经历:
工作经历-
印度总理

不可接受的字符串:
工作经历:
经理学历-
工作经历:
教育-2014-2017
教育(毕业)

请帮帮我


提前谢谢。

如果声明很长,为什么
会很长

    String str = "Scary";

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

    }
String str=“吓人”;
如果(str.length()<70&&str.charAt(0)>='A'){
}

为什么
if
语句会很长

    String str = "Scary";

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

    }
String str=“吓人”;
如果(str.length()<70&&str.charAt(0)>='A'){
}

你肯定需要锚和了望台

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

因此,将匹配5-71个字符之间的字符串,请参阅。此外,它还检查是否存在零个或一个特殊字符(即在lookarounds的帮助下)。

您肯定需要锚定和lookarounds

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

因此,将匹配5-71个字符之间的字符串,请参阅。此外,它还检查是否存在零个或一个特殊字符(即在lookarounds的帮助下)。

我将向正则表达式中添加
^
$

^[A-Z].{,69}$
应该有用。这意味着:

  • ^
    字符串的开头
  • [A-Z]
    任何大写字符(英文)
  • {0,69}
    最多69个其他字符
  • $
    字符串的结尾

如果总长度最多为70个字符…

我会将
^
$
添加到您的正则表达式中:

^[A-Z].{,69}$
应该有用。这意味着:

  • ^
    字符串的开头
  • [A-Z]
    任何大写字符(英文)
  • {0,69}
    最多69个其他字符
  • $
    字符串的结尾

对于总长度最多为70个字符的…

请在正则表达式的开头指定一个lookaround断言,该断言可以包含4到70个字符:

(?=.{4,70}$)
你可以这样写:

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

在正则表达式的开头指定一个lookaround断言,该断言可以包含4到70个字符:

(?=.{4,70}$)
你可以这样写:

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

/\A^[A-Z][A-Za-z]*\z/ 
工作正则表达式=

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

我认为
$
在这种情况下是过时的,因为
{4,70}
与任何内容的匹配次数最多为70次。因此,如果在此之后输入了任何内容,则无论如何都不应进行匹配。它允许使用问题中提到的以外的特殊符号,这是不应该发生的。@OmPrakash:请提供一些有效的字符串和一些不允许的字符串。@Jan啊,我不知道行分隔符的特殊处理。接得好!更新了答案以包含lookarounds。我认为
$
在本例中已过时,因为
{4,70}
与任何内容的匹配次数最多为70次。因此,如果在此之后输入了任何内容,则无论如何都不应进行匹配。它允许使用问题中提到的以外的特殊符号,这是不应该发生的。@OmPrakash:请提供一些有效的字符串和一些不允许的字符串。@Jan啊,我不知道行分隔符的特殊处理。接得好!更新了答案以包含环视。这缺少长度约束。这缺少长度约束。