用于在输入点和数字后禁止输入点的正则表达式 JavaFX

2024-01-13

我需要输入用逗号分隔的连续整数和实数,如下所示: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(使用前将#替换为@)

用于在输入点和数字后禁止输入点的正则表达式 JavaFX 的相关文章

随机推荐