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

标签 java regex javafx

我需要输入连续的整数和用逗号分隔的实数,像这样: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+)?$

Live demo

关于java - 用于在输入点和数字 JavaFX 后禁止输入点的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44746807/

相关文章:

java - 如何从 JSONObject 填充字符串数组以在 ListView 中使用

c# - 从 URL 链接获取名称的正则表达式

c# - 清理 IDisposable 问题

java - JavaFX 1.8 中的计时器(时钟)

java - 线程通信: How to signal that a key was clicked? java.lang.IllegalMonitorStateException

java - 如何在javafx中嵌入PApplet?

java - 将 byte[] 从 Java 传递到 C++

java - Apache Poi Word 文档打开报 NullPointerException

java - 在 Android Canvas 上绘图不起作用

c# - 验证我的正则表达式是否按预期工作