應業務需要,可能需要對字符串進行各種比較或者分割等等操作,如果使用傳統代碼去完成上述功能,那工作量將是相當的龐大,所以在jdk1.4之后就出現了正則表達式。
1,在java中正則表達式的使用
a)匹配字符串;
public static void main(String[] args) {
String qq = "123a45664"; String regex = "[1-9]\\d{4,14}"; boolean flag = qq.matches(regex); if(flag){ System.out.println(qq+"...is ok"); } else{ System.out.println(qq+"... 不合法"); }
//匹配電話號碼
String tel="14275624713";
String telreg="1[3,5,8][0-9]{3,11}";
System.out.println(tel.matches(telreg));
}
b)分割
public static void main(String[] args) { String str="aqwe axcvafg hjaolm"; String strReg=" "; String []arr=str.split(strReg); for (String string : arr) { System.out.println(string); } }
其中split()方法還有重載的方法
public static void main(String[] args) { String str="aqweaxcvafghjaolm"; String strReg="a"; String []arr=str.split(strReg,7); for (String string : arr) { System.out.println(string); } }
上述代碼輸出結果為:
qwe
xcv
fghj
olm
如果將7改為2,則輸出結果為:
qweaxcvafghjaolm
如果將7改為5,則輸出結果為:
qwe
xcv
fghj
olm
由此可以得知,上述重載的split的第二個參數表示的意思是將原字符串分割為幾段,從一開始分開始,但是最多能分的段數為實際情況的段數,若超過則按照實際情況的來
c)替代
public static void main(String[] args) { String str="aqweaxdvafghjaolm"; String strReg="a"; String str1=str.replaceAll(strReg, "c"); System.out.println(str1); }
上述代碼是將a都替換成c,其實替換是可以和正則結合在一起使用的如下代碼
public static void main(String[] args) { String str="aqwea41256ghjaolm"; String strReg="[0-9]"; String str1=str.replaceAll(strReg, "c"); System.out.println(str1); }
上述代碼表示將字符串中的所有數字都替換成c
d)獲取
從已存在的字符串中獲取符合一定規則的子字符串
public static void main(String[] args) { String str = "yin yu shi wo zui cai de yu yan"; System.out.println(str); String reg = "\\b[a-z]{3}\\b";//匹配只有三個字母的單詞 //將規則封裝成對象。 Pattern p = Pattern.compile(reg); //讓正則對象和要作用的字符串相關聯。獲取匹配器對象。 Matcher m = p.matcher(str); while(m.find()) { System.out.println(m.group()); System.out.println(m.start()+"...."+m.end()); // start() 字符的開始下標(包含) //end() 字符的結束下標(不包含) } }
2 在js中
我們都知道,在注冊功能時,需要填入很多的信息,那么對那些填入的信息進行判斷就需要很多的工作了。下面就介紹正則在js中是如何使用的
對移動電話號碼進行判斷:
首先需要獲得該文本框內用戶輸入的移動電話號碼的值,
然后在進行比較。具體代碼如下:
function telTag{ var tel =$("tel").val(); var telReg="/^1[3,5,8][0-9]{3-11}$/"; alert(telReg.test(tel)); }
對其他數據的判斷也是一樣,先獲取到值,然后寫出正確的正則表達式(網上有很多寫好了的),在直接調用test()方法即可!