Java Regular Expression仅匹配1到5个星号

时间:2015-12-02 08:25:18

标签: java regex

我有一个文本字段,用户可以在其中输入组织的星级评分到数据库中,其中列的最大长度为5.

我尝试使用".*\\*{1,5}$"来匹配字符串,但是当我输入6个字符时,它似乎无法正常工作。

从数据库中抛出的错误消息是:

我希望在触发错误消息之前捕获输入。

1 个答案:

答案 0 :(得分:7)

  

我尝试过使用".*\\*{1,5}$"

说“匹配任意数字的任何字符(可能不包括换行符,取决于你使用的标志),后跟1-5个星号,在字符串的末尾,”不是“匹配1-5个星号。”当您使用六个星号对其进行测试时,它会传递字符串,因为它将前五个星号与.*匹配(因为它是贪婪的),然后在末尾添加一个带有\*{1,5}的星号。

仅匹配1-5个星号而不是其他:^\*{1,5}$(作为字符串文字:"^\\*{1,5}$")。 ^是“输入的开始”锚点,\*(字符串文字中的\\*)是转义星号(因为它具有特殊含义),{1,5}表示“至少一次,最多五次”,$是“输入结束”锚。更多信息the documentation for Pattern