最近的任务是带短信验证的注册功能和密码找回功能,在注册页面时,通过校验手机号和密码符合规定格式后才掉接口发送短信给用户,
所以写了一个小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>
新闻热点
疑难解答