/所以我在Java中使用这个正则表达式只允许字母或数字作为用户输入:
if (!string.matches("[a-zA-Z0-9]*")) {
//Not allowed
}
这就是诀窍,我已经检查过这个元素是否存在,所以不需要检查它是否为空。只需0
个或更多匹配的字符。
完成此检查后,用户输入将存储到XML文件中。不知何故,用户已经能够通过此正则表达式获取NULL字符,因此在尝试读取文件时出现此错误:
(0x0)不允许使用特殊字符
所以我只是好奇,是否有可能绕过这种类型的正则表达式?或者这肯定是由别的东西造成的?目前这似乎是最可能的原因,但我不确定我是否正确使用正则表达式。
答案 0 :(得分:1)
*
量词在零和无限次之间匹配,尽可能多次,根据需要返回。所以一个空字符串可以通过你的正则表达式。
示例:https://regex101.com/r/jZ2hI7/1(请注意,它与空文本匹配1)
答案 1 :(得分:1)
更改[a-zA-Z0-9]*
到[a-zA-Z0-9]+
。
星号(" *")将允许零个字符。