单个字段中名字和姓氏的正则表达式

时间:2016-09-17 21:04:53

标签: java regex

我有一个场景,用户必须在一个字段中输入它的第一个名字和姓氏,所以两个名字之间必须有一个空格,并且在空格之后必须至少有一个字符。我尝试使用contains(""),但如果用户只输入一个空格并且在该空格后没有输入任何内容,则此方法返回true。

请指导我实现这一目标的方法。我也试图搜索Regular Expression但未找到任何内容。

3 个答案:

答案 0 :(得分:0)

您可以使用以下代码:

public static void main(String[] args) throws IOException {
    String input = "first last";
    if (input.matches("[a-zA-Z]*[\\s]{1}[a-zA-Z].*")) {
        String[] name = input.split(" ");
        System.out.println(Arrays.toString(name));
    } else {
        System.out.println("Please input the valid name.");
    }
}

如果出现以下情况,它会将名字和姓氏列入数组:

  • [a-zA-Z]* - 输入以字符开头;
  • [\\s]{1} - 包含仅一个空格;
  • [a-zA-Z].* - 以至少一个字符结束。

答案 1 :(得分:0)

这是正则表达式和测试:

@Test
public void test_firstAndLastName_success() {
  Pattern ptrn = Pattern.compile("(\\w+)\\s+(\\w+)");
  Matcher matcher = ptrn.matcher("FirstName  LastName");
  if (matcher.find()) {
    Assert.assertEquals("FirstName", matcher.group(1));
    Assert.assertEquals("LastName", matcher.group(2));
  } else {
    Assert.fail();
  }
}

验证是在matcherfalse返回find

如果您不想允许多个空格(\s+),请删除+(仍允许单个标签)或用空格替换。

答案 2 :(得分:0)

修剪字符串后,使用“”进行简单拆分。

请查看以下代码以获得更多理解:

Exception

请查看有空格和无空格的其他情况。这应该会有所帮助。