关于正则表达式:Java正则表达式指定数字范围

Java regular expressions specify range of digits

本问题已经有最佳答案,请猛点这里访问。

我试图验证用户输入坐标的格式:x,y所以我用的是正则表达式。x和y可以在1到15之间,所以我用

1
[1-15]\\d{1,2},[1-15]\\d{1,2}

但这不起作用,因为15显然不是数字。我把它改成

1
\\d{1,2},\\d{1,2}

所以至少我可以确认它的两个一位或两位数字,但它可以在两边都达到99;不好。我试过其他一些方法,比如

1
\\d{1}|[1]\\d[0-5]\\d...

但什么都不起作用,老实说,我已经看了这么久了,这一切都不再有意义了。

更重要的是,使用Java的正则表达式特征是不是很好的实践?我可以想出其他方法来做这个,但这只是一个个人项目,我正在努力尝试不同的方法来处理我通常做的事情。


我认为你理解[...]的方式是错误的:它意味着你指定了一系列字符。所以[1-15]的意思是:115。因此相当于1|5

但是,您可以使用[1-9]|1[0-5]指定数字1到15。将此插入regex会导致:

1
([1-9]|1[0-5])\\d{1,2},([1-9]|1[0-5])\\d{1,2}