Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对于全名,正则表达式未按预期工作_Java_Regex - Fatal编程技术网

Java 对于全名,正则表达式未按预期工作

Java 对于全名,正则表达式未按预期工作,java,regex,Java,Regex,我有一个文本框,在这里我把输入作为全名 当用户以My Name的形式输入输入时,我没有收到任何错误。然而,当用户以的形式输入输入时,我的名字是,我得到了一个错误 我的正则表达式是 ([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+) 实际需要的是,文本应该具有 only (a-z OR A-Z) AND white space... 演示输入是 我的名字是XYZ PQR STU 我叫XYZ XYZ PQR STU 如何使用regex实现这一点 更新1 我正在使用 Pat

我有一个文本框,在这里我把输入作为全名

当用户以
My Name
的形式输入输入时,我没有收到任何错误。然而,当用户以
的形式输入输入时,我的名字是
,我得到了一个错误

我的正则表达式是

([a-zA-Z]+|[a-zA-Z]+\\s[a-zA-Z]+)
实际需要的是,文本应该具有

only (a-z OR A-Z) AND white space...
演示输入是

  • 我的名字是XYZ PQR STU
  • 我叫XYZ
  • XYZ PQR STU
  • 如何使用regex实现这一点

    更新1 我正在使用

        Pattern p = Pattern.compile("[a-zA-Z\\s]");
        Matcher m = p.matcher("DummyName");
        boolean matchFound = m.matches();
    


    我仍然得到了
    matchFound
    ,因为
    FALSE

    \s
    代表空白。如果希望在字符类中允许空白以及大小写字母,可以使用
    [a-zA-Z\s]
    \s
    表示空白。如果您想在字符类中允许空白以及大小写字母,您可以使用
    [a-zA-Z\s]
    试试这个
    ^[a-zA-Z]+(?:\s+[a-zA-Z]+)*$
    。你可以根据自己的口味调整一下。
    ?:
    用于确保组不会捕获-如果您只是测试完整字符串,则不需要捕获
    ^
    $
    将匹配输入文本的开头和结尾-对于
    匹配()
    来说不是直接需要的,但这是一种很好的保护措施。

    试试这个
    ^[a-zA-Z]+(?:\s+[a-zA-Z]+)*$
    。你可以根据自己的口味调整一下。
    ?:
    用于确保组不会捕获-如果您只是测试完整字符串,则不需要捕获
    ^
    $
    将匹配输入文本的开头和结尾-这不是
    匹配()所直接要求的,但它是一种很好的保护措施。

    我认为您应该把问题说得更清楚一点,现在您是说只有空格才可以作为名称?可能会显示一些可接受的输入?@owlstead:Updated question…如果您使用Eclipse,您可以尝试使用QuickREx插件进行一些实时测试。我认为您应该让您的问题更清楚一点,现在您是说名称只能使用空格?可能会显示一些可接受的输入?@owlstead:Updated question…如果您使用Eclipse,您可以尝试QuickREx插件进行一些实时测试。在您的更新中,您的模式只匹配1个字符。如果希望在一个组中找到全名,请尝试匹配
    ([a-zA-Z\s]+)
    。或者
    ([a-zA-Z\s]+?)+
    如果您需要多个组。我已经更新了我的问题。。查看可能的输入。。。我应该用什么?好吧,这真的取决于你,但是如果我正确地收集到你的意图,我猜你想要
    ([a-zA-Z\s]+)
    。这将接受任何非空的大写字母、小写字母和空格。我想你不需要“+”后面的“?”。@owlstead是的。。。你完全正确。我只是匆忙地把更复杂的一个扔了下来。我认为
    [a-zA-Z\s]+
    是他真正想要的。在您的更新中,您的模式只匹配1个字符。如果希望在一个组中找到全名,请尝试匹配
    ([a-zA-Z\s]+)
    。或者
    ([a-zA-Z\s]+?)+
    如果您需要多个组。我已经更新了我的问题。。查看可能的输入。。。我应该用什么?好吧,这真的取决于你,但是如果我正确地收集到你的意图,我猜你想要
    ([a-zA-Z\s]+)
    。这将接受任何非空的大写字母、小写字母和空格。我想你不需要“+”后面的“?”。@owlstead是的。。。你完全正确。我只是匆忙地把更复杂的一个扔了下来。我认为
    [a-zA-Z\s]+
    才是他真正想要的。