最近的任務是帶短信驗證的注冊功能和密碼找回功能,在注冊頁面時,通過校驗手機號和密碼符合規定格式后才掉接口發送短信給用戶,
所以寫了一個小demo用來校驗手機號和密碼。
說明:當手機號為11位數字并且密碼是6~12位任意字符,注冊按鈕可用,點擊按鈕會檢查手機的格式是否符合移動、聯通、電信的格式,如果不符合會彈出吐司提示“號碼不符合規范”’
目標手機號格式:
移動:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
聯通:130、131、132、152、155、156、185、186
電信:133、153、180、189
總結起來就是第一位必定為1,第二位必定為3或5或8,其他位置的可以為0-9
目標密碼的格式6到12個任意字符
效果圖

下面奉上demo的簡單代碼:
MainActivity也是唯一的activity
public class MainActivity extends AppCompatActivity implements View.OnClickListener {    PRivate EditText mEdt1;    private Button mLoginbtn;    private EditText mEdt2;    private Editable temp;    private LinearLayout mLv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    private void init() {        //文本錄入框1        mEdt1 = (EditText) findViewById(R.id.edt1);        //文本錄入框2        mEdt2 = (EditText) findViewById(R.id.edt2);        //注冊按鈕        mLoginbtn = (Button) findViewById(R.id.btn);        mLoginbtn.setOnClickListener(this);        //關閉軟件盤        mLv = (LinearLayout) findViewById(R.id.activity_main);        mLv.setOnClickListener(this);        //調用數字鍵盤        mEdt1.setInputType(InputType.TYPE_CLASS_NUMBER);        //文本輸入框無焦點時阻止輸入法彈出                //判斷文本框2的數據類型        mEdt2.addTextChangedListener(new TextWatcher() {            @Override            public void beforeTextChanged(CharSequence s, int start, int count, int after) {            }            @Override            public void onTextChanged(CharSequence s, int start, int before, int count) {            }            @Override            public void afterTextChanged(Editable s) {                //判斷密碼6~12任意字符                if (s.toString().matches("^//w{6,12}$")) {                    mLoginbtn.setEnabled(true);                } else {                    mLoginbtn.setEnabled(false);                }            }        });    }    @Override    public void onClick(View view) {        switch (view.getId()){            case R.id.activity_main:                InputMethodManager imm = (InputMethodManager)                        getSystemService(Context.INPUT_METHOD_SERVICE);                imm.hideSoftInputFromWindow(view.getWindowToken(), 0);                break;            case R.id.btn:                //匹配手機號正則                /* 說明:移動:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188                    * 聯通:130、131、132、152、155、156、185、186                    * 電信:133、153、180、189                    * 總結起來就是第一位必定為1,第二位必定為3或5或8,其他位置的可以為0-9                    * ^(13|15|18)[0-9]{9}$)|(^0[1,2]{1}//d{1}-?//d{8}$ */                if(!mEdt1.getText().toString().matches("^(13|15|18)[0-9]{9}$")){                    Toast.makeText(this, "號碼輸入有誤", Toast.LENGTH_SHORT).show();                }else {                    Toast.makeText(this, "號碼正確", Toast.LENGTH_SHORT).show();                }                break;        }    }}布局代碼<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:clickable="true"    android:orientation="vertical">    <EditText        android:id="@+id/edt1"        android:layout_width="match_parent"        android:layout_height="50dp"        android:hint="請輸入手機號"        android:inputType="number"        android:maxLength="11"        android:gravity="center_horizontal"/>    <EditText        android:id="@+id/edt2"        android:layout_width="match_parent"        android:layout_height="50dp"        android:hint="請輸入密碼"        android:maxLength="12"        android:gravity="center_horizontal"/>    <Button        android:id="@+id/btn"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="注冊"/></LinearLayout>
新聞熱點
疑難解答