可以格式化為任意位數分隔的格式規范,間隔符只能為-英文減號或 英文空格。
<script language="javascript"> //函數功能:格式化手機號碼和400電話格式 //參數:要格式化的字符對象ID,存放新值的對象ID,字符串格式規則(如3-4-4、3 3 4) //制作:凌陳亮(QQ:57404811) function formatmobile(id,id2,str){ var num=trim(window.document.getElementById(id).value); //獲取號碼并去左右空格 var renum=""; //函數返回對象 var arr=new Array(); var i,m=0,n; if(str.indexOf('-')>-1){ arr=str.split("-"); for(i=0; i<arr.length; i++){ n=m+Number(arr[i]); renum+=num.substring(m,n); if(i<arr.length-1) renum+="-"; m=n; } }else{ arr=str.split(" "); for(i=0; i<arr.length; i++){ n=m+Number(arr[i]); renum+=num.substring(m,n); if(i<arr.length-1) renum+=" "; m=n; } } window.document.getElementById(id2).innerHTML=renum; } function trim(str){ //刪除左右兩端的空格 return str.replace(/(^\s*)|(\s*$)/g, ""); //過濾首尾空格為空 } </script> 手機號:<input type="text" name="mobile" id="mobile" value="13023105435" /> 格式化后:<span id="fmm"></span> <p> <input type="button" value="3-4-4格式" onClick="javascript:formatmobile('mobile','fmm','3-4-4');" /> <input type="button" value="3 4 4格式" onClick="javascript:formatmobile('mobile','fmm','3 4 4');" /> </p> 400電話:<input type="text" name="400tel" id="400tel" value="4008888888" /> 格式化后:<span id="fmm2"></span> <p> <input type="button" value="3-3-4格式" onClick="javascript:formatmobile('400tel','fmm2','3-3-4');" /> <input type="button" value="3 3 4格式" onClick="javascript:formatmobile('400tel','fmm2','3 3 4');" /> <input type="button" value="3-4-3格式" onClick="javascript:formatmobile('400tel','fmm2','3-4-3');" /> <input type="button" value="3-5-2格式" onClick="javascript:formatmobile('400tel','fmm2','3-5-2');" /> <input type="button" value="3-2-5格式" onClick="javascript:formatmobile('400tel','fmm2','3-2-5');" /> </p>
去除字符串左右兩邊的空格,在vbscript里面可以使用 trim函數,但在js中卻沒有這個內置方法,需要自己寫代碼。下面的實現方法用到了正則表達式。
第一種:寫成類的方法
<script language="javascript" type="text/javascript"> String.prototype.trim=function(){ //過濾首尾空格 return this.replace(/(^\s*)|(\s*$)/g, ""); } </script>
調用方式:
<%
'作者:凌陳亮www.wgsygc.com(QQ:57404811)
'自定義函數功能:根據查詢條件表達式獲取某條記錄的某個字段值
'只適合單一記錄的單一字段值獲取,一般文章列表中顯示文章分類名稱時常用
'此函數只為方便代碼寫作或多處調用時使用,并無什么特殊之處
'參數:表名,查詢字段名稱,查詢值,返回字段名稱
function getsys(tb,wfield,wfield_v,getfield)
if len(tb)>0 and len(wfield)>0 and len(wfield_v)>0 and len(getfield)>0 then
dim f_rs
'conn為打開數據庫變量
set f_rs=conn.execute("select [" & getfield & "] from [" & tb & "] where [" & wfield & "]=" & wfield_v & "")
if f_rs.bof=false and f_rs.eof=false then getsys=f_rs(0)
set f_rs=nothing
end if
end function
%>
<%
'函數:指定字符串1每隔n位插入字符串2,1個中文=2個英文【凌陳亮(QQ:57404811)】
'參數:字符串1(原字符串),n位開始插入,字符串2(要插入的字符串)
'功能可實現:控制每行字數,超出自動換行
function insertstr(str,n,insstr)
dim f_return,f_i,f_m,f_k,f_a
f_k=0
for f_i=1 to len(str)
f_a=mid(str,f_i,1)
dim re : set re=New RegExp '建立正則表達式
re.Pattern="[^\x00-\xff]" '設置模式,即建立正則式規則
re.Global=False '設置全局可用性
re.Ignorecase=True '設置是否區分字符大小寫
re.MultiLine=False '設置多行標記可用性
f_m=len(re.replace(f_a,"$2")) '執行搜索測試
f_k=f_k+f_m
if f_k<n then
f_return=f_return & f_a
elseif f_k=n then
f_return=f_return & f_a & insstr
f_k=0
else
f_return=f_return & insstr & f_a
f_k=f_m
end if
next
insertstr=f_return
end function
%>
<%
'格式化提交的特殊字符【凌陳亮(QQ:57404811)】
'參數:類型(1為SQL查詢字符串時使用,0和其它為輸出到原表單元素中時使用),字符串
function replace_yinhao(typ,str)
dim f_str : f_str=str
if len(f_str)>0 then
if typ=1 then 'SQL查詢語句時使用
f_str=replace(f_str,"'","''")
f_str=replace(f_str,"""","""""")
else '輸出到原表單元素中時使用
f_str=replace(f_str,"&","&")
f_str=replace(f_str,"#","#")
f_str=replace(f_str," "," ")
f_str=replace(f_str,"'","'")
f_str=replace(f_str,"""",""")
f_str=replace(f_str,"<","<")
f_str=replace(f_str,">",">")
end if
end if
replace_yinhao=f_str
end function
%>
<%
'ASP實現表格隔行換色函數【凌陳亮(QQ:57404811)】
'參數:i,當前行號(只能為整數);colors,顏色集合(值可為16進制顏色值,也可為標準顏色英文單詞,各顏色值之間用"|"符號隔開)
'可實現2、3、4等無限個顏色交替
function getbgcolor(i,colors)
dim f_return
if checknum(1,0,i,"","")=1 then
i=clng(i)
else
i=0
end if
if len(colors)>0 then
dim f_colors_arr '定義接收參數colors的顏色樣式的數組
dim f_colors_arr_ubound '定義接收參數colors的顏色個數的變量
f_colors_arr=split(colors,"|",-1,1) '將所有顏色樣式傳給數組
f_colors_arr_ubound=ubound(f_colors_arr,1) '獲取數組的上標
'循環數組的每一個元素
dim f_i '定義循環數組元素變量
dim f_mod '定義行號除以顏色個數的余數的變量
for f_i=0 to f_colors_arr_ubound
f_mod=i mod (f_colors_arr_ubound+1)
if f_mod=0 then
f_return=f_colors_arr(f_colors_arr_ubound)
else
f_return=f_colors_arr(f_mod-1)
end if
next
end if
getbgcolor=f_return
end function
<%
'取左邊N個字符,1個中文=2個英文【凌陳亮(QQ:57404811)】
'參數:字符串,左邊位數,超出部分截斷的替換字符串(如:...)
function getleftstr(str,n,str_right)
if len(str)>0 then
dim f_str,f_i,f_k,f_a
f_k=0
for f_i=1 to len(str)
f_a=mid(str,f_i,1)
dim re : set re=New RegExp '建立正則表達式
re.Pattern="[^\x00-\xff]" '設置模式,即建立正則式規則
re.Global=False '設置全局可用性
re.Ignorecase=True '設置是否區分字符大小寫
re.MultiLine=False '設置多行標記可用性
f_k=f_k+len(re.replace(f_a,"$2")) '執行搜索測試
if f_k<=n then
f_str=f_str & f_a
else
f_str=f_str & str_right
exit for
end if
next
getleftstr=f_str
end if
end function
%>
<%
'獲取并規范日期時間格式【凌陳亮(QQ:57404811)】
'參數:返回類型(0日期時間,1日期,2時間,3日期時間編號),時間
function getnow_cdate(typ,f_now)
dim f_return
if len(f_now)>0 then
dim f_date,f_time
f_date=year(f_now) & "-" & right("0" & month(f_now),2) & "-" & right("0" & day(f_now),2)
f_time=right("0" & hour(f_now),2) & ":" & right("0" & minute(f_now),2) & ":" & right("0" & second(f_now),2)
if typ=0 then
f_return=f_date & " " & f_time '格式:2015-01-02 03:04:05
elseif typ=1 then
f_return=f_date '格式:2015-01-02
elseif typ=2 then
f_return=f_time '格式:03:04:05
else
'格式:20150102030405(常用于生成訂單號)
f_return=year(f_now) & right("0" & month(f_now),2) & right("0" & day(f_now),2) & right("0" & hour(f_now),2) & right("0" & minute(f_now),2) & right("0" & second(f_now),2)
end if
getnow_cdate=f_return
end if
end function
%>
<%
'生成隨機數(1-11位數字)【凌陳亮(QQ:57404811)】
'參數:位數(1-11之間的數字)
function setrannums(n)
randomize timer() '初始化隨機數生成器
'Int、Fix函數:返回數字的整數部分
'Left函數:返回左邊的指定個數字符串
'Rnd函數:返回一個小于1但大于或等于0的值
setrannums=int(left(999999999999*rnd()+100000000000,n))
end function
%>
<% '函數:ASP過濾HTML標簽、JS代碼、CSS樣式,只獲取純文本【凌陳亮(QQ:57404811)】 '參數:字符串,左邊字符數(空為全文,1個中文字符=2個英文字符),超出部分的連接字符串 function gw_nohtml(content,n,nexttext) dim f_content : f_content=content if len(f_content)>0 then dim re : set re=New RegExp '建立正則表達式 re.Global=true '設置全局可用性 re.Ignorecase=false '設置是否區分字符大小寫 re.MultiLine=true '設置多行標記可用性 re.Pattern="<[sS][tT][yY][lL][eE][^>]*?>[\s\S]*?<\/[sS][tT][yY][lL][eE]>" '去STYLE樣式正則式 f_content=re.replace(f_content,"") '執行搜索測試 re.Pattern="<[sS][cC][rR][iI][pP][tT][^>]*?>[\s\S]*?<\/[sS][cC][rR][iI][pP][tT]>" '去SCRIPT腳本正則式 f_content=re.replace(f_content,"") '執行搜索測試 re.Pattern="<(.|\n)+?>" '去HTML標簽正則式 f_content=re.replace(f_content,"") '執行搜索測試 '自適應UNICODE特殊字符 const utf8str_const="&|"|<|>| |©|®|»|Θ|´|Æ|æ|À|à|Å|å|Ã|ã|Ä|ä|¦|Ç|ç|¸|¢|ˆ|Á|¤|°|÷|É|é|Ê|ê|È|è|Ð|ð|Ë|ë|€|ƒ|½|¼|¾|Í|í|Î|î|¡|Ì|ì|¿|Ï|ï|«|¯|µ|·|¬|Ñ|ñ|Ó|ó|Ô|ô|Œ|œ|Ò|ò|ª|º|Ø|ø|Õ|õ|Ö|ö|¶|±|£|á|Â|Š|š|§|­|¹|²|³|ß|Þ|þ|˜|×|Ú|ú|Û|û|Ù|ù|¨|Ü|ü|Ý|ý|¥|Ÿ|ÿ| | | |‌|‍|‎|‏|–|—|‘|’|‚|“|”|„|‹|›|†|‡|‰|•|…|″|‾|⁄|℘|ℑ|ℜ|™|ℵ|←|↑|→|↓|↔|↵|⇐|⇑|⇒|⇓|⇔|∀|∂|∃|∅|∇|∈|∉|∋|∏|∑|−|∗|√|∝|∞|∠|∧|∨|∩|∪|∫|∴|∼|≅|≈|≠|≡|≤|≥|⊂|⊃|⊄|⊆|⊇|⊕|⊗|⊥|⋅|⌈|⌉|⌊|⌋|⟨|⟩|◊|♠|♣|♥|♦|Α|α|Β|β|Γ|γ|Δ|δ|Ε|ε|Ζ|ζ|Η|η|â|θ|ϑ|Ι|ι|Κ|κ|Λ|λ|Μ|μ|Ν|ν|Ξ|ξ|Ο|ο|Π|π|ϖ|Ρ|ρ|Σ|σ|ς|Τ|τ|Υ|υ|ϒ|Φ|φ|Χ|χ|Ψ|ψ|Ω|ω" dim utf8str : utf8str=split(utf8str_const,"|") dim f_return if len(n)>0 then dim f_k : f_k=0 dim f_i,f_j,f_a,f_b for f_i=1 to len(f_content) f_a=mid(f_content,f_i,1) for f_j=0 to ubound(utf8str) f_b=mid(f_content,f_i,len(utf8str(f_j))) if f_b=utf8str(f_j) then f_a=f_b f_i=f_i+len(utf8str(f_j))-1 exit for end if next re.Pattern="[^\x00-\xff]" '設置模式,即建立正則式規則 f_k=f_k+len(re.replace(f_a,"$2")) '執行搜索測試 if f_k<=n then f_return=f_return & f_a else f_return=f_return & nexttext exit for end if next else f_return=f_content end if set re=nothing gw_nohtml=f_return end if end function %>