有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在java中生成正则表达式语法

我想制作一个正则表达式语法,允许使用ASCII字母、数字、连字符、下划线和正斜杠

目前我正在使用以下语法,但它不起作用

if (!id.matches("[a-zA-Z0-9_-/]+")) {
    throw new IllegalArgumentException("Invalid ID: \"" + id
            + "\". An ID may not be the empty string and must contain only ASCII letters, digits, hyphens and underscores and forward slash.");
}

但是,当我从正则表达式中删除“/”时,它工作正常。在这种情况下,如何添加正斜杠

我研究了regex教程,它有一些例子,但这些都是单独的。我想使用正斜杠和ASCII字母、数字


共 (1) 个答案

  1. # 1 楼答案

    使用_-/创建一个范围

    将连字符放在末尾(并始终保持在那里):

    if (!id.matches("[a-zA-Z0-9_/-]+"))
                                ^
    

    或者,将连字符转义为始终将其视为文字符号:

    if (!id.matches("[a-zA-Z0-9_\\-/]+"))
                                ^^^
    

    注意:已经进行了一些讨论,并且已经指出,如果正则表达式将进一步改进/增强/扩展,最好的方法是转义字符类中应视为文字-符号的连字符