null字符可能通过正则表达式吗?

时间:2016-04-22 13:54:25

标签: java regex xml

/所以我在Java中使用这个正则表达式只允许字母或数字作为用户输入:

if (!string.matches("[a-zA-Z0-9]*")) {
    //Not allowed
}

这就是诀窍,我已经检查过这个元素是否存在,所以不需要检查它是否为空。只需0个或更多匹配的字符。

完成此检查后,用户输入将存储到XML文件中。不知何故,用户已经能够通过此正则表达式获取NULL字符,因此在尝试读取文件时出现此错误:

  

(0x0)不允许使用特殊字符

所以我只是好奇,是否有可能绕过这种类型的正则表达式?或者这肯定是由别的东西造成的?目前这似乎是最可能的原因,但我不确定我是否正确使用正则表达式。

2 个答案:

答案 0 :(得分:1)

*量词在零和无限次之间匹配,尽可能多次,根据需要返回。所以一个空字符串可以通过你的正则表达式。

示例:https://regex101.com/r/jZ2hI7/1(请注意,它与空文本匹配1)

答案 1 :(得分:1)

更改[a-zA-Z0-9]*[a-zA-Z0-9]+。 星号(" *")将允许零个字符。