我需要输入用逗号分隔的连续整数和实数,如下所示:2,12.4,3
我禁止通过以下表达式连续输入两个逗号、两个点和除数字之外的所有其他字符:(?!.*[\\.,]{2,})[\\d,\\.]*
但有了它我可以输入:2,12.4.3
即输入点和数字后,可以再次输入点,且只能是数字或逗号。
我需要保留前面表达式中的所有条件,并拒绝输入该点,如果在该点之前,通过数字(\d+),有一个点。
@FXML
private TextField tf;
@Override
public void initialize(URL url, ResourceBundle rb) {
tf.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
if (!newValue.matches("(?!.*[\\.,]{2,})[\\d,\\.]*")) {
((StringProperty) observable).setValue(oldValue);
}
});
}
您应该更具体地寻找解决方案:
^(?:\\d+(?:\\.\\d+)?,)*\\d+(?:\\.\\d+)?$
现场演示 https://regex101.com/r/uY0IaI/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)