我找到了一个符合规则的正则表达式。
允许的字符
字母: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";
系统将显示无效密钥,密钥应该有效。你能帮我吗?
答案 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