如何验证字符串是否是有效的java变量?

时间:2013-03-15 16:47:51

标签: java regex

如何最好地检查字符串输入是否是用于编码的有效java变量?我敢肯定,我不是第一个愿意这样做的人。但也许我错过了正确的关键字来找到有用的东西。

最佳可能是RegEx,它会检查:

  • 以字母

  • 开头 然后
  • 可以包含数字,字母

  • 可以包含一些特殊字符,例如'_'(哪个?)

  • 可能不包含空格分隔符

2 个答案:

答案 0 :(得分:19)

public static boolean isValidJavaIdentifier(String s) {
    if (s.isEmpty()) {
        return false;
    }
    if (!Character.isJavaIdentifierStart(s.charAt(0))) {
        return false;
    }
    for (int i = 1; i < s.length(); i++) {
        if (!Character.isJavaIdentifierPart(s.charAt(i))) {
            return false;
        }
    }
    return true;
}

编辑:并且,如@Joey所示,您还应该过滤掉关键字和保留字。

答案 1 :(得分:12)

只需使用内置的isName方法:

public static boolean isName(CharSequence name)

这将返回名称是否是最新源版本中语法上有效的限定名称。

请参阅isName()文档。