Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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,我用这个模式来检查 public static final Pattern VALID_FIRST_CHARACTERS = Pattern.compile("^[\\ \\'\\-]"); public boolean isValidFirstChar(String name) { if (VALID_FIRST_CHARACTERS.matcher(name).matches()) { return true; } return false; }

我用这个模式来检查

public static final Pattern VALID_FIRST_CHARACTERS = Pattern.compile("^[\\ \\'\\-]");

public boolean isValidFirstChar(String name) {
    if (VALID_FIRST_CHARACTERS.matcher(name).matches()) {
        return true;
    }
    return false;
}

运气不好,有人能帮帮我吗?

你可以这样改变你的,它会起作用的:

public static void main(String[] args) throws FileNotFoundException {
    System.out.println(isValidFirstChar("-test"));
    System.out.println(isValidFirstChar("\\test"));
    System.out.println(isValidFirstChar("\'test"));
    System.out.println(isValidFirstChar("test"));
}
public static final Pattern VALID_FIRST_CHARACTERS = Pattern.compile("^[\\\\ \\' \\-].*");

public static boolean isValidFirstChar(String name) {
    if (VALID_FIRST_CHARACTERS.matcher(name).matches()) {
        return true;
    }
    return false;
}
其结果是:

true
true
true
false
您必须为java和regex转义
\\\
,这就是为什么您需要
\\\\\
这将在为regex翻译时变成
\\


结尾的
*
表示匹配…之后的任何内容,因此它以
\or'或-
开头,后跟任何内容。

您认为模式文字
^[\\\\\'\-]
代表什么?为什么你这么认为?为什么你不使用
String#startsWith
?我使用的是公共静态最终模式VALID\u NAMEFIELD\u CHARACTERS=Pattern.compile(([a-zA-Zèèèèèèèèèèèèèèèèèèèèèèèèèèè;它工作正常,只是无法检查第一个character@SotiriosDelimanolis我需要一次完成所有3个验证如果我使用字符串start with,我必须使用3个时间为什么必须使用?你认为它更快、更高效吗?你为什么这么认为?谢谢你的回复,我只需要连字符(-)、撇号(')和空格()来匹配,所以我把它改为公共静态最终模式VALID_FIRST_CHARACTERS=Pattern.compile(^['-]);现在工作正常谢谢@brso05