名字 - 数字/数字正则表达式Java

时间:2018-01-27 00:27:36

标签: java regex

我正在尝试在java中创建一个正则表达式,用于检查以下格式的字符串:

“FirstName LastName - Number / Number”

示例:

约翰约翰 - 66/25

过去半个小时我一直在努力,看起来很简单,但我无法理解它。这是我最近的尝试:

[A-Z]{1}[a-z]+\s{1}[A-Z]{1}[a-z]+\s{1}\\-\s{1}[0-9]{2}\\/[0-9]{2}

考虑检查fname和lname的第一个字母。第一个和最后一个名称部分有效,但是“ - ”字符,之后不行。

正则表达式使用的代码:

public class Regex {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    while(true){

        System.out.println("Enter the regular expression");

        Pattern p = Pattern.compile(scan.nextLine());

        System.out.println("Enter the matcher");

        Matcher m = p.matcher(scan.nextLine());

        boolean success = m.find();

        System.out.println(success);
    }
}

1 个答案:

答案 0 :(得分:0)

短划线\\-前面的双反斜杠和正斜杠\\/实际上最终匹配了一个文字\,这在您想要的字符串中不存在。

其他一些评论:

  1. 如果您只想要一个匹配,则不需要{1},除非指定了其他内容,否则这是隐式的。

  2. 此外,短划线-不是角色类之外的特殊字符,因此不需要转义。

  3. [0-9]可简化为\d

  4. 清理:

    [A-Z][a-z]+\s[A-Z][a-z]+\s-\s\d{2}/\d{2}
    

    工作示例:https://regex101.com/r/JbkwJS/3