赛迪网 > IT技术 编程语言 > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

献丑啦--正则表达式练习器

发布时间:2006.07.27 04:26     来源:cfan    作者:

    正则表达式的用途很广泛,但要熟练掌握就不是一件容易的事情了。为此,我编写了这个练习器用来帮助学习。

    请多指教!


*********将以下代码复制到 RegExp.htm 即可 **********

<HTML>

<HEAD>

<TITLE>正则表达式练习器</TITLE>

<meta name = 安徽 池州 统计局 徐祖宁 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()  //建立正则表达式对象

var nextpoint = 0      //匹配时的偏移量

//设置正则表达式

function setPattern(form) {

  var mode

  if(form.chkmode.checked) mode = "gi"  //i:不分大小写 g:全局,好象没什么作用

  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 = "没有找到\n" + form.reglist.value

      form.matchlist.value = " "

      nextpoint = 0

      key = false

    }

  }while (key)

}

//设置当前使用的正则表达式

function setregexp(n) {

  var s = document.all.regexplist.value.split("\r\n")

  document.all.regexp.value = s[n*2-1]  //.replace("\r","")

  nextpoint = 0

}


//定义选择监视

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>正规表达式练习器</font></td><td align=right><a href=mailto:czjsz_ah@stats.gov.cn>czjsz_ah@stats.gov.cn</a></td></tr></table>

<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>

进行匹配的正规表达式:  忽略大小写<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>

测试用正则表达式列表: 

使用第<input type=text name=num size=2 value=1 style="font-size:8pt;height:18px">个<input type=button value=Go onClick=setregexp(this.form.num.value) style="font-size:8pt;height:18px">

    允许复制<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.检查数字:

([-+]?[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>

匹配到的成分:(单步时可见)

<TEXTAREA NAME="matchlist" COLS=58 ROWS=8 style="font-size:9pt;"></TEXTAREA>

</td></tr></table></FORM>

<script>

setregexp(1)

</script>

</BODY>

</HTML>





[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 基于SQL Server的WEB应用程序注入攻击详细介 (10-26) · 用asp怎样编写文档搜索页面(使用index server (05-07)
· Remote Scripting进阶教程---检查错误 (02-12) · 自己谈谈安全! (02-24)
· 使用函数自动生成n层目录 (11-21) · 鱼和熊掌………………应用程序保护 (03-12)
· 最近开发一个小型的OA (01-05) · 求最大公约数和最小公倍数 (08-09)
· 运行asp脚本的asp脚本(原作:V37) (04-22) · 以前精华里面的email检查js脚本似乎不好用, (04-02)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管