Regex android正则表达式和十进制格式

Regex android正则表达式和十进制格式,regex,decimalformat,Regex,Decimalformat,我在数据库中有一个列号(9,4)。我想发送到输入edittext的列数据 我必须控制格式123456789.1234,并且只控制数字和点 我找到了数字和点的正则表达式,但我没有十进制格式控制。用户无法输入123.12345或1234567891.1 我该怎么做 我的正则表达式是: "^*[0-9\\.]+$" Edittext控制代码为: txtTabelaEni.addTextChangedListener(new TextWatcher() { @Overr

我在数据库中有一个列号(9,4)。我想发送到输入edittext的列数据

我必须控制格式123456789.1234,并且只控制数字和点

我找到了数字和点的正则表达式,但我没有十进制格式控制。用户无法输入123.12345或1234567891.1

我该怎么做

我的正则表达式是:

"^*[0-9\\.]+$"
Edittext控制代码为:

        txtTabelaEni.addTextChangedListener(new TextWatcher() {
        @Override
        public void afterTextChanged(Editable s)
        {
            String text = txtTabelaEni.getText().toString();
            if (text.length() > 0) {
                if (!text.substring(text.length() - 1).matches(regexStr))
                {
                    txtTabelaEni.setText(text.substring(0, text.length() - 1));
                    txtTabelaEni.setSelection(txtTabelaEni.length());
                }
            }
        }
        @Override
        public void onTextChanged(CharSequence s, int st, int b, int c){ }
        @Override
        public void beforeTextChanged(CharSequence s, int st, int c, int a){ }
    });
我必须控制格式123456789.1234,并且只控制数字和点

您可以在Java中使用此正则表达式:

String re = "^\\d{0,9}\\.\\d{1,4}$"
如果要使小数部分可选,请使用:

String re = "^(\\d{0,9}\\.\\d{1,4}|\\d{1,9})$"
尝试以下模式:

\d+($|(\.($|\d+$)))
它查找一个数字序列,然后查找以下其中一个:

end of string - matches 123
a dot and end of string - matches 123.
a dot and more digits and then end of string - matches 1234.45

A后面带有字母的将不匹配

我无法将数字输入此正则表达式?很抱歉,我不理解您的评论,您能澄清一下吗?当我在编辑文本中使用您的正则表达式时,我无法写入点(.)并且可以写入12345678912。我不想向dot写入超过九个字符,那么这个正则表达式工作正常,并且不接受
12345678912
。@mobileprogramming您需要转义反斜杠<代码>\d应该是
\\d
。否则Java编译器将尝试为d查找转义序列。