JS常用正則表達式收集3

! 去除字符串兩端空格的處理

如果採用傳統的方式,就要可能就要採用下面的方式了
//清除左邊空格
function js_ltrim(deststr)
{
if(deststr==null)return "";
var pos=0;
var retStr=new String(deststr);
if (retStr.lenght==0) return retStr;
while (retStr.substring(pos,pos+1)==" ") pos++;
retStr=retStr.substring(pos);
return(retStr);
}
//清除右邊空格
function js_rtrim(deststr)
{
if(deststr==null)return "";
var retStr=new String(deststr);
var pos=retStr.length;
if (pos==0) return retStr;
while (pos && retStr.substring(pos-1,pos)==" " ) pos--;
retStr=retStr.substring(0,pos);
return(retStr);
}
//清除左邊和右邊空格
function js_trim(deststr)
{
if(deststr==null)return "";
var retStr=new String(deststr);
var pos=retStr.length;
if (pos==0) return retStr;
retStr=js_ltrim(retStr);
retStr=js_rtrim(retStr);
return retStr;
}

採用正則表達式,來去除兩邊的空格,只需以下代碼
String.prototype.trim = function()
{
return this.replace(/(^/s*)|(/s*$)/g, "");
}

一句就搞定了,
可見正則表達式爲我們節省了相當的編寫代碼量


! 移動手機號的校驗

如果採用傳統的校驗方式至少就要完成下面三步的校驗,
(1). 是否是數字
(2).是否是11位
(3).數字的第三位是否是5,6,7,8,9
如果採用正則表達式校驗,只需以下代碼
function checkMobile1(form)
{
if (form.mobile.value > "")
{
var reg=/13[5,6,7,8,9]/d{8}/;
if ( form.mobile.value.match(reg)== null)
{
alert("請輸入正確的移動手機號碼!");
form.mobile.focus(); return false;
}
}
return true;
}

從上面的代碼可以看出校驗移動手機號只需定義一個var reg=/13[5,6,7,8,9]/d{8}/;模式匹配串就可以完成合法性校驗了

! URL的校驗,
條件:必須以http:// 或 https:// 開頭, 端口號必須爲在1-65535 之間, 以下代碼完成了合法性校驗

//obj:數據對象
//dispStr :失敗提示內容顯示字符串
function checkUrlValid( obj, dispStr)
{
if(obj == null)
{
alert("傳入對象爲空");
return false;
}
var str = obj.value;

var urlpatern0 = /^https?:////.+$/i;
if(!urlpatern0.test(str))
{
alert(dispStr+"不合法:必須以'http:////'或'https:////'開頭!");
obj.focus();
return false;
}

var urlpatern2= /^https?:////(([a-zA-Z0-9_-])+(/.)?)*(:/d+)?.+$/i;
if(!urlpatern2.test(str))
{
alert(dispStr+"端口號必須爲數字且應在1-65535之間!");
obj.focus();
return false;
}


var urlpatern1 =/^https?:////(([a-zA-Z0-9_-])+(/.)?)*(:/d+)?(//((/.)?(/?)?=?&?[a-zA-Z0-9_-](/?)?)*)*$/i;

if(!urlpatern1.test(str))
{
alert(dispStr+"不合法,請檢查!");
obj.focus();
return false;
}

var s = "0";
var t =0;
var re = new RegExp("://d+","ig");
while((arr = re.exec(str))!=null)
{
s = str.substring(RegExp.index+1,RegExp.lastIndex);

if(s.substring(0,1)=="0")
{
alert(dispStr+"端口號不能以0開頭!");
obj.focus();
return false;
}

t = parseInt(s);
if(t<1 || t >65535)
{
alert(dispStr+"端口號必須爲數字且應在1-65535之間!");
obj.focus();
return false;
}
}
return true;
}

對url的校驗,看上去有很多的代碼,這是因爲要給予出錯提示, 否則只需var urlpatern1 =/^https?:////(([a-zA-Z0-9_-])+(/.)?)*(:/d+)?(//((/.)?(/?)?=?&?[a-zA-Z0-9_-](/?)?)*)*$/i; 一句就可以校驗出url合法性了

 

去掉字符串頭尾多餘的空格
/g是全文查找所有匹配

function String.prototype.Trim(){return this.replace(/(^/s*)|(/s*$)/g, "");}

function String.prototype.LTrim(){return this.replace(/(^/s*)/g, "");}

function String.prototype.RTrim(){return this.replace(/(/s*$)/g, "");}

--------------------------------------------------------------
應用:計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)

String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa").length;}

--------------------------------------------------------------
應用:javascript中沒有像vbscript那樣的trim函數,我們就可以利用這個表達式來實現,如下:

String.prototype.trim = function()
{
return this.replace(/(^/s*)|(/s*$)/g, "");
}
得用正則表達式從URL地址中提取文件名的javascript程序,如下結果爲page1

s="http://www.9499.net/page1.htm"
s=s.replace(/(.*//){0,}([^/.]+).*/ig,"$2")
alert(s)

##利用正則表達式限制網頁表單裏的文本框輸入內容:

--------------------------------------------------------------
用正則表達式限制只能輸入中文:οnkeyup="value=value.replace(/[^/u4E00-/u9FA5]/g,')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/u4E00-/u9FA5]/g,'))"

--------------------------------------------------------------
用正則表達式限制只能輸入全角字符: οnkeyup="value=value.replace(/[^/uFF00-/uFFFF]/g,')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/uFF00-/uFFFF]/g,'))"

--------------------------------------------------------------
用正則表達式限制只能輸入數字:οnkeyup="value=value.replace(/[^/d]/g,') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,'))"

--------------------------------------------------------------
用正則表達式限制只能輸入數字和英文:οnkeyup="value=value.replace(/[/W]/g,') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^/d]/g,'))"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章