我必须创建一个只允许1-10范围内的用户输入的正则表达式 并且仅以.5
的增量基本上只允许1 - 1.5 - 2 - 2.5 - 3 - 3.5 - 4 - 4.5 - 5 ... 9.5 - 10
我会尝试用另一种方法来做到这一点,但在这种情况下,我必须在我的程序中使用正则表达式。
到目前为止,我已经尝试过这个:
"^[1-10](.5)?$"
还有这个:
"^[1-9](.5)?[10]$"
和此:
"^[1-9](.5)?|[10]$"
感谢您的帮助!
答案 0 :(得分:2)
使用以下正则表达式:
"^[1-9](\\.5)?|10$"
.
应该转义为字面匹配一个点。答案 1 :(得分:2)
10|[1-9](?:\.5)?
10
或1
到9
之后的数字,可选地后跟.5
。
如果您希望它拒绝子字符串匹配,请在^...$
之间。
(鉴于它是Java,记得逃避字符串中的反斜杠!)
答案 2 :(得分:0)
没有正则表达式的替代解决方案:
public static void main(String[] args) {
List<Double> list = new ArrayList<Double>() {
{
add(1.0);
add(1.5);
add(2.5);
add(9.5);
add(2.3);
add(7.1);
add(10.0);
}
};
for (Double value : list) {
if (value % 1 == 0 || (value - 0.5) % 1 == 0) {
System.out.println(value);
}
}
}
输出:
1.0
1.5
2.5
9.5
10.0
答案 3 :(得分:0)
我认为你很亲密。考虑对你的正则表达式进行以下微小改动......
^[1-9](\.5)?$|^10$
G0od Luck!