Java字符串验证

时间:2014-09-17 03:16:06

标签: java regex

我找到了一个符合规则的正则表达式。

允许的字符

字母:a-z A-Z 数字:0-9

我正在使用[^a-zA-Z0-9],但在致电时

regex = "[^a-zA-Z0-9]" ;  
String key = "message";
    if (!key.matches(regex))
                message = "Invalid key";

系统将显示无效密钥,密钥应该有效。你能帮我吗?

5 个答案:

答案 0 :(得分:4)

如果您想允许这些字符[a-zA-Z0-9],则不应使用^,因为它会否定[]内的内容。

此表达式[^a-zA-Z0-9]表示 a-z A-Z或数字:0-9。

您可能已经在正则表达式的乞讨处看到^[]之外使用,以指示乞讨字符串^[a-zA-Z0-9]

答案 1 :(得分:2)

以下正则表达式允许使用一个或多个字母数字字符

^[A-Za-z0-9]+$

您的正则表达式[^a-zA-Z0-9]匹配单个字符但不匹配字母数字字符。 [^..]称为否定字符类,它对字符类中存在的字符进行否定。

当传递给matches方法时,你不需要在正则表达式中给出开始或结束锚点。所以[A-Za-z0-9]+就足够了。

<强>解释

  • ^表示开始的锚点。
  • [A-Za-z0-9]++重复前一个令牌[A-Za-z0-9]一次或多次。
  • $行尾。

答案 2 :(得分:0)

我认为你只需删除not-operator。以下是相同的示例,仅重命名变量:

invalidChars = "[^a-zA-Z0-9]" ;  
String key = "message";
if (key.matches(invalidChars)) {
  message = "Invalid key";
}

(但是,否定的逻辑不是很易读。)

答案 3 :(得分:0)

请尝试以下Alphanumeric regex

"^[a-zA-Z0-9]$"

^ - 字符串开头

[a-zA-Z0-9] - 包含多个字符

$ - 字符串结尾

答案 4 :(得分:0)

通过验证使用\ A \ z锚点而不是^ $:

\\A[a-zA-Z0-9]+\\z