2016-01-24 52 views
0

请考虑这个正则表达式,它接受任意数字。这些数字可以逗号,分离不多超过4位正则表达式接受小于最大大小的数字

\d*\d{1,3}(,\d{3})*(\.\d{1,4})?|\.\d{1,4} 

因此,所有下方被接受:

123 
12345678 
123,456,789 
123.000 
123,456.00 
1.1234 
.1234 

https://regex101.com/r/cE0uH9/1

我想的是,正则表达式还检查总大小拒绝字符串是长于25(包括逗号和点)。在这个正则表达式中可以做到吗?

+1

不过,你也可以使用'length'属性。 – Tushar

回答

4

超过25个字符不再:

^(?=.{0,25}$) 

结合您的正则表达式:

^(?=.{0,25}$)(\d*\d{1,3}(,\d{3})*(\.\d{1,4})?|\.\d{1,4}) 
1

你可以在模式匹配之前检查Java中的长度。检查长度比匹配正则表达式要快得多,所以如果在if中将其短路,则可以获得一些性能。

相关问题