最近的任務是帶短信驗證的注冊功能和密碼找回功能,在注冊頁面時,通過校驗手機號和密碼符合規定格式后才掉接口發送短信給用戶,
所以寫了一個小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>
新聞熱點
疑難解答