正則表達(dá)式的用途很廣泛,但要熟練掌握就不是一件容易的事情了。為此,我編寫了這個(gè)練習(xí)器用來(lái)幫助學(xué)習(xí)。 請(qǐng)多指教!
*********將以下代碼復(fù)制到 RegExp.htm 即可 ********** <HTML> <HEAD> <TITLE>正則表達(dá)式練習(xí)器</TITLE> <meta name = 安徽 池州 統(tǒng)計(jì)局 徐祖寧 e-mail:czjsz@stats.gov.cn> <script language="JavaScript"> function OnMove() { window.status = "("+window.event.clientX+","+window.event.clientY+")" + " :: "+document.location } </script>
<SCRIPT LANGUAGE="JavaScript1.2"> var re = new RegExp()//建立正則表達(dá)式對(duì)象 var nextpoint = 0//匹配時(shí)的偏移量 //設(shè)置正則表達(dá)式 function setPattern(form) { var mode if(form.chkmode.checked) mode = "gi"//i:不分大小寫 g:全局,好象沒(méi)什么作用 else mode = "g" re.compile(form.regexp.value,mode) nextpoint = 0 form.reglist.value = "" } //檢查是否有匹配 function findIt(form) { setPattern(form) var input = form.main.value if (input.search(re) != -1) { form.output[0].checked = true } else { form.output[1].checked = true } } //檢查匹配位置 function locateIt(form) { setPattern(form) var input = form.main.value form.offset.value = input.search(re) } //檢查所有的匹配情況 function execIt(form) { if(nextpoint == 0 || ! form.scankmode.checked) { findIt(form) form.reglist.value = "" } var key = true if(form.scankmode.checked) key = false do { var input = form.main.value var matchArray = re.exec(input.substr(nextpoint)) if(matchArray) { for(var i=1;i<matchArray.length;i++) matchArray[i] = "$"+i+":"+matchArray[i] form.reglist.value = (nextpoint+matchArray.index)+" => " + matchArray[0] +"\n"+form.reglist.value form.matchlist.value = "$0:"+matchArray.join("\n") nextpoint = nextpoint + matchArray.index + matchArray[0].length }else { if(!key) form.reglist.value = "沒(méi)有找到\n" + form.reglist.value form.matchlist.value = " " nextpoint = 0 key = false } }while (key) } //設(shè)置當(dāng)前使用的正則表達(dá)式 function setregexp(n) { var s = document.all.regexplist.value.split("\r\n") document.all.regexp.value = s[n*2-1]//.replace("\r","") nextpoint = 0 }
//定義選擇監(jiān)視 var isNav = (navigator.appName == "Netscape") function showSelection() { if (isNav) { var theText = document.getSelection() } else { var theText = document.selection.createRange().text } if(theText.length>0 && document.all.selechkmode.checked) document.all.regexp.value = theText } if (isNav) { document.captureEvents(Event.MOUSEUP) } document.onmouseup = showSelection </SCRIPT>
</HEAD> <BODY style="font-size=9pt;" OnMouseMove=OnMove()> <FORM><table width=100% cellspacing=0 cellpadding=0><tr><td><font color=red>正規(guī)表達(dá)式練習(xí)器</font></td><td align=right><a href=mailto:czjsz_ah@stats.gov.cn>czjsz_ah@stats.gov.cn</a></td></tr> <table width=100% broder=1 frame=above rules=none style="font-size:9pt;"> <tr><td width=50%valign=top> 輸入一些被尋找的正文:<BR> <TEXTAREA NAME="main" COLS=58 ROWS=5 WRAP="virtual" style="font-size:9pt;"> 09-11-2001 09/11/2001 czjsz_ah@stats.gov.cn asdff 12345 196.168.1.3 www.sohu.com ftp://www.chinaasp.com 2001.9.11 http://www.active.com.cn/club/bbs/bbsView.asp http://www.163.com/inden.htm </TEXTAREA><BR> 進(jìn)行匹配的正規(guī)表達(dá)式: 忽略大小寫<INPUT TYPE="checkbox" NAME="chkmode" checked style="font-size:8pt;height:18px"><BR> <TEXTAREA NAME="regexp" COLS=51 ROWS=5 style="font-size:9pt;"></TEXTAREA> <INPUT TYPE="button" VALUE="清除" onClick="this.form.regexp.value=''" style="font-size:8pt;height:18px"><BR> <INPUT TYPE="button" VALUE="能找到嗎?[regexObject.test(string)]" style="font-size:8pt;width:70%;height:18px" onClick="findIt(this.form)"> <INPUT TYPE="radio" NAME="output" style="font-size:8pt;height:18px">Yes <INPUT TYPE="radio" NAME="output" style="font-size:8pt;height:18px">No <BR> <INPUT TYPE="button" VALUE="在哪里?[string.search(regexObject)]" style="font-size:8pt;width:70%;height:18px" onClick="locateIt(this.form)"> <INPUT TYPE="text" NAME="offset" SIZE=4 style="font-size:8pt;height:18px"> </td> <td valign=top> 測(cè)試用正則表達(dá)式列表: 使用第<input type=text name=num size=2 value=1 style="font-size:8pt;height:18px">個(gè)<input type=button value=Go onClick=setregexp(this.form.num.value) style="font-size:8pt;height:18px"> 允許復(fù)制<INPUT TYPE="checkbox" NAME="selechkmode" style="font-size:8pt;height:18px"> <textarea NAME="regexplist" cols=58 rows=14 wrap=off style="font-size:9pt;"> 1.檢查日期: (1[0-2]|0?[1-9])[-./](0?[1-9]|[12][0-9]|3[01])[-./](\d\d\d\d)) 2.檢查數(shù)字: ([-+]?[0-9]+\.?[0-9]+) 3.檢查URL: ((http|ftp)://)?(((([\d]+\.)+){3}[\d]+(/[\w./]+)?)|([a-z]\w*((\.\w+)+){2,})([/][\w.~]*)*) 4.檢查E-mail \w+@((\w+[.]?)+) </textarea> </td></tr> <tr><td valign=bottom> <INPUT TYPE="button" VALUE="有哪些?[regexObject.exec(string)]" style="font-size:8pt;width:70%;height:18px" onClick="execIt(this.form)"> 單步<INPUT TYPE="checkbox" NAME="scankmode" style="font-size:8pt;height:18px"><BR> <TEXTAREA NAME="reglist" COLS=58 ROWS=8 style="font-size:9pt;"></TEXTAREA> </td> <td valign=bottom> 匹配到的成分:(單步時(shí)可見(jiàn)) <TEXTAREA NAME="matchlist" COLS=58 ROWS=8 style="font-size:9pt;"></TEXTAREA> </td></tr></FORM> <script> setregexp(1) </script> </BODY> </HTML>
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!