加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

利用正则表达式限制EditText小数点前后位数和格式

发布时间:2020-12-14 06:44:31 所属栏目:百科 来源:网络整理
导读:import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.widget.EditText; import org.w3c.dom.Text; import java.util.ArrayList; import java.util.List; import java.
import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; import android.widget.EditText; import org.w3c.dom.Text; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by 仙人掌之路 on 17-9-7. */ public class PriceTextWatcher implements TextWatcher { //输入前内容 private String mBeforeText; //输入后内容 private String mAfterText; private static final java.lang.String TAG = PriceTextWatcher.class.getSimpleName(); //输入框 private EditText mEditText; //匹配器 private Pattern mPattern; private List<TextWatcher> mTextListWaiter = new ArrayList<>(); public void addTextChangedListener(TextWatcher watcher) { mTextListWaiter.add(watcher); } public PriceTextWatcher(EditText editText) { this.mEditText = editText; /** * 正则表达式匹配 * 条件一:如果以0开始,那么小数点前最多只有1位 * 条件二:小数点后面最多只有2位 * 条件三:如果不以0开始,小数点前面最多只有5位 */ mPattern = Pattern.compile("(([0]|(0[.]d{0,2}))|([1-9]d{0,4}(([.]d{0,2})?)))"); } @Override public void beforeTextChanged(CharSequence charSequence,int i,int i1,int i2) { Log.i(TAG,"beforeTextChanged:" + charSequence); mBeforeText = charSequence.toString(); } @Override public void onTextChanged(CharSequence charSequence,"onTextChanged:" + charSequence); if (TextUtils.isEmpty(charSequence)) return; mAfterText = charSequence.toString(); Matcher matcher = mPattern.matcher(mAfterText); if (matcher.matches()) { Log.i(TAG,"匹配"); } else { Log.i(TAG,"不匹配"); mEditText.setText(mBeforeText); //游标移动到最后一位 mEditText.setSelection(mEditText.length()); } for (TextWatcher textWatcher : mTextListWaiter) { textWatcher.onTextChanged(mEditText.getText(),i,i1,i2); } } @Override public void afterTextChanged(Editable editable) { } } 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读