主要是想要判斷一個input欄位中,所輸入的內容,是否為16進制,也就是由A-F, a-f或0-9所組成的字串

其實正規化還不是很熟,在不是很熟的狀況下,通常就只能傻傻又費工的自己寫個for 迴圈來判斷,如下:

就估且當作keyvalue是取得input欄位的value,接著要判斷他是不是16進制的字元所組成

function get_key_type()
{

var hexarray = ["A","B","C","D","E","F","a","b","c","d","e","f","0","1","2","3","4","5","6","7","8","9"];
var keyvalue=document.form.WdswepKey0.value;
var nowchar="";
var pass=0;

for (m=0 ; m<keyvalue.length ; m++) {


nowchar = keyvalue.substr(m, 1);

for (i=0 ; i<hexarray.length ; i++) {

alert(nowchar + "====" + hexarray[i]);

if(nowchar == hexarray[i]) {

alert("match!");
pass=1;
break;


}
else


pass=0;


}

if (pass == 0)
{

alert("is not hex.");
break;


}

}

}

但其實,如果是透過正規化語法,只要二行就夠了

var re=/^[a-fA-F0-9]+$/;

if(re.test(document.form.WdswepKey0value)) 如果不是由0-9, a-f, A-F所組成,則會回傳false

一開始我一直犯了一個錯,就是沒有加上 + 所以一直判斷失敗,因為會變成只要有一個字元符合a-f, A-F或0-9他就會傳回true , 必須要加上+才是表示所有字元都要是由條件中的a-f, A-F和0-9所組成。

另外一個就是切割字串,雖然javascript 有提供很多切割字串的function,但是還是沒有正規語言來的好用。

ex: var test ="11 (B+G+N)"; 我想要只取出其中的數字的部份,也只需要二行。

var regex = /\s+(.*)/gi; \s表示空白的部份; + 表示至少一個; ()就是括號的部份; *表示單一字元; * 表示0個或多個; gi表示全域比對並忽略大小寫

var test ="11 (B+G+N)";

alert(test.replace(regex,"")); 用replace把條件中的字元都取代成空白,此時就會輸出11

再來就是取代掉MAC address中的:符號,例如00:11:22:33:44:55會變成001122334455

macvalue=haveMAC[i].text.replace(/\:/g,'');


參考網址:

  http://neural.cs.nthu.edu.tw/jang/books/webprog/03jscript/reg1.asp?SessionCount=13  3-13: 正規表示法法

 

arrow
arrow

    Yisin 發表在 痞客邦 留言(0) 人氣()