Java 名称的正则表达式

Java 名称的正则表达式,java,regex,string,Java,Regex,String,我需要为具有以下模式的名称构建一个正则表达式,所以 约翰·D.E.将通过正则表达式测试。 基本上我想要的是: N字符数(a-zA-Z)优先 那么只有一个空间 正好一个字符(a-zA-Z) 正好一个点 正好一个字符(a-zA-Z) 正好一个点 我写了这个正则表达式^([a-zA-Z]*)+({1})+([a-zA-Z]{1})+(\.)+([a-zA-Z]{1})+(\.),但它似乎工作不正常(例如,表达式仍然允许n个空格)。我如何限制它{1}不起作用。试试这个: ^([a-zA-Z])+([ ]

我需要为具有以下模式的名称构建一个正则表达式,所以 约翰·D.E.将通过正则表达式测试。 基本上我想要的是:

  • N字符数(a-zA-Z)优先

  • 那么只有一个空间

  • 正好一个字符(a-zA-Z)

  • 正好一个点

  • 正好一个字符(a-zA-Z)

  • 正好一个点

  • 我写了这个正则表达式
    ^([a-zA-Z]*)+({1})+([a-zA-Z]{1})+(\.)+([a-zA-Z]{1})+(\.)
    ,但它似乎工作不正常(例如,表达式仍然允许n个空格)。我如何限制它<代码>{1}不起作用。

    试试这个:

    ^([a-zA-Z])+([ ]{1})([a-zA-Z]{1})([.])([a-zA-Z]{1})([.])
    
    我把空格和点带进了课堂(
    []
    )。如果你不这样做点,那么它意味着任何字符。Alo加号是多余的,它们意味着不止一个字符

    附言:@f1sh正确地注意到,拥有
    {1}
    不会改变任何东西,因此较短的形式是:

    ^([a-zA-Z])+([ ])([a-zA-Z])([.])([a-zA-Z])([.])
    
    试试这个:

    ^([a-zA-Z])+([ ]{1})([a-zA-Z]{1})([.])([a-zA-Z]{1})([.])
    
    我把空格和点带进了课堂(
    []
    )。如果你不这样做点,那么它意味着任何字符。Alo加号是多余的,它们意味着不止一个字符

    附言:@f1sh正确地注意到,拥有
    {1}
    不会改变任何东西,因此较短的形式是:

    ^([a-zA-Z])+([ ])([a-zA-Z])([.])([a-zA-Z])([.])
    

    看看
    +
    做了什么,然后重新评估您的正则表达式中真正需要它的部分。另外,
    是一个元字符,需要进行转义。另外,
    {1}
    什么也不做,因为默认值是一次出现,然后后跟
    +
    ??e、 g.
    正好是一个空格,
    ”[a-zA-Z]“
    正好是一个空格,后跟一个字母看看
    +
    的作用,然后重新评估您的正则表达式中真正需要它的部分。另外,
    是一个元字符,需要进行转义。另外,
    {1}
    什么也不做,因为默认值是一次出现,然后后跟
    +
    ??e、 g.
    正好是一个空格,
    ”[a-zA-Z]“
    正好是一个空格后跟一个空格letter@f1sh你是对的,我在点击“回答”时注意到:)更正现在它是正确的:)即使使用
    {1}
    是多余的,可以删除。你是按字符付费的吗<代码>([])为什么只从“空格”中选择一个字母作为捕获组?为什么
    ([。])
    而不仅仅是
    \\.
    ?@f1sh再次表示同意,添加了您的建议;)或者稍微短一点,
    ^[a-zA-Z]+([a-zA-Z]\){2}
    @f1sh你是对的,我在点击“回答”时注意到了:)更正现在它是正确的:)即使使用
    {1}
    是多余的,可以删除。你是按字符付费的吗<代码>([])为什么只从“空格”中选择一个字母作为捕获组?为什么
    ([。])
    而不仅仅是
    \\.
    ?@f1sh再次表示同意,添加了您的建议;)或者稍微短一点{code>^[a-zA-Z]+([a-zA-Z]\.){2}