android 同步監聽輸入框,以及電話號碼Regex!

來源:互聯網
上載者:User

 下面這段程式主要為了實現以下三個功能:

 

  一、同步監聽文本輸入框的變化,預設繼承以下三個方法,分別監聽文本改變前、中、後;
  二、同時用Regex判斷輸入的電話號碼是否合法;
  三、最後在activity展示一秒後,跳出軟鍵盤;

 

package com.my;</p><p>import java.util.Timer;<br />import java.util.TimerTask;<br />import java.util.regex.Matcher;<br />import java.util.regex.Pattern;</p><p>import android.app.Activity;<br />import android.content.Context;<br />import android.os.Bundle;<br />import android.text.Editable;<br />import android.text.TextWatcher;<br />import android.util.Log;<br />import android.view.inputmethod.InputMethodManager;<br />import android.widget.Button;<br />import android.widget.EditText;</p><p>public class LoginCheckActivity extends Activity<br />{<br />private Button checkNextButton = null;<br />private Button checkCancelButton = null;<br />private EditText phoneEditText = null;<br />private TextWatcher phoneTextWatcher;<br />private String phoneNumber = null;<br />private InputMethodManager imm;</p><p>@Override<br />protected void onCreate(Bundle savedInstanceState)<br />{<br />// TODO Auto-generated method stub<br />super.onCreate(savedInstanceState);<br />setContentView(R.layout.login_check);<br />initView();<br />}</p><p>private void initView()<br />{<br />// TODO Auto-generated method stub<br />checkNextButton = (Button) findViewById(R.id.button_check_next);<br />checkCancelButton = (Button) findViewById(R.id.button_check_cancel);<br />phoneEditText = (EditText) findViewById(R.id.login_check_edittext);<br />checkNextButton.setEnabled(false);//設定按鈕為不可按</p><p>/**<br /> * 監聽輸入的手機號碼是否正確<br /> */<br />phoneTextWatcher = new TextWatcher()<br />{</p><p>@Override<br />public void afterTextChanged(Editable s)<br />{<br />// TODO Auto-generated method stub<br />}</p><p>@Override<br />public void beforeTextChanged(CharSequence s, int start, int count,<br />int after)<br />{<br />// TODO Auto-generated method stub<br />}</p><p>@Override<br />public void onTextChanged(CharSequence s, int start, int before,<br />int count)<br />{<br />// TODO Auto-generated method stub<br />phoneNumber = phoneEditText.getText().toString();<br />if (isPhoneNumberValid(phoneNumber) == true)<br />{<br />checkNextButton.setEnabled(true);<br />Log.e("@@@", "ture");<br />}<br />else<br />{<br />checkNextButton.setEnabled(false);<br />Log.e("@@@", "false");<br />}<br />}</p><p>};<br />phoneEditText.addTextChangedListener(phoneTextWatcher);<br />}</p><p>/**<br /> * 檢查字串是否為電話號碼的方法,並返回true or false的判斷值<br /> */<br />public static boolean isPhoneNumberValid(String phoneNumber)<br />{<br />boolean isValid = false;<br />/** 可接受的電話格式有:<br /> * ^//(? : 可以使用 "(" 作為開頭<br /> * (//d{3}): 緊接著三個數字<br /> * //)? : 可以使用")"接續<br /> * [- ]? : 在上述格式後可以使用具選擇性的 "-".<br /> * (//d{3}) : 再緊接著三個數字<br /> * [- ]? : 可以使用具選擇性的 "-" 接續.<br /> * (//d{5})$: 以五個數字結束.<br /> * 可以比較下列數字格式:<br /> * (123)456-7890, 123-456-7890, 1234567890, (123)-456-7890<br /> */<br />String expression = "^//(?(//d{3})//)?[- ]?(//d{3})[- ]?(//d{5})$";</p><p>/** 可接受的電話格式有:<br /> * ^//(? : 可以使用 "(" 作為開頭<br /> * (//d{3}): 緊接著三個數字<br /> * //)? : 可以使用")"接續<br /> * [- ]? : 在上述格式後可以使用具選擇性的 "-".<br /> * (//d{4}) : 再緊接著四個數字<br /> * [- ]? : 可以使用具選擇性的 "-" 接續.<br /> * (//d{4})$: 以四個數字結束.<br /> * 可以比較下列數字格式:<br /> * (02)3456-7890, 02-3456-7890, 0234567890, (02)-3456-7890<br /> */<br />String expression2 = "^//(?(//d{3})//)?[- ]?(//d{4})[- ]?(//d{4})$";</p><p>CharSequence inputStr = phoneNumber;<br />/*建立Pattern*/<br />Pattern pattern = Pattern.compile(expression);<br />/*將Pattern 以參數傳入Matcher作Regular expression*/<br />Matcher matcher = pattern.matcher(inputStr);<br />/*建立Pattern2*/<br />Pattern pattern2 = Pattern.compile(expression2);<br />/*將Pattern2 以參數傳入Matcher2作Regular expression*/<br />Matcher matcher2 = pattern2.matcher(inputStr);<br />if (matcher.matches())//|| matcher2.matches())<br />{<br />isValid = true;<br />}<br />return isValid;<br />}</p><p>@Override<br />protected void onResume()<br />{<br />// TODO Auto-generated method stub<br />super.onResume();<br />Timer timer = new Timer();<br />timer.schedule(new TimerTask()<br />{</p><p>@Override<br />public void run()<br />{<br />imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);<br />imm.showSoftInput(phoneEditText, 0);<br />}</p><p>}, 1000);<br />}</p><p>}<br />

 

還有一種更簡潔地判斷手機號碼的方法,如下:

 

/**<br /> * 判別手機是否為正確手機號碼;<br /> *號碼段分配如下:<br /> *移動:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188<br /> *聯通:130、131、132、152、155、156、185、186<br /> *電信:133、153、180、189、(1349衛通)<br /> */<br /> public static boolean isMobileNum(String mobiles)<br /> {<br /> Pattern p = Pattern<br /> .compile("^((13[0-9])|(15[^4,//D])|(18[0,5-9]))//d{8}$");<br /> Matcher m = p.matcher(mobiles);<br /> return m.matches();

 

ok!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.