正则表达式练习器

2016-02-19 13:58 21 1 收藏

每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐正则表达式练习器,赶紧看过来吧!

【 tulaoshi.com - Web开发 】

代码如下:

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;imatchArray.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("rn")
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.length0 && 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()
FORMtable width=100% cellspacing=0 cellpadding=0trtdfont color=red正规表达式练习器/font/tdtd align=righta href=mailto:czjsz_ah@stats.gov.cnczjsz_ah@stats.gov.cn/a/td/tr/table
table width=100% broder=1 frame=above rules=none style="font-size:9pt;"
trtd 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
/TEXTAREABR
进行匹配的正规表达式:  忽略大小写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])[-./](dddd))
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
trtd 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


对正则表达式练习器的改进,原贴ID901680

覆盖原execIt函数
修改后的execIt函数允许对多个正则表达式进行匹配(每个正则表达式一行),并对每一个匹配成分显示出是第几个正则表达式匹配的。
这可视为语法分析的雏形,只要对匹配产生相应的动作。

function execIt(form) {
var mode
if(form.chkmode.checked) mode = "gi"
else mode = "g"
var regexpArray = form.regexp.value.split("rn") //获取正则表达式到数组

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

if(nextpoint == 0) form.reglist.value = ""
var key = true
if(form.scankmode.checked) key = false
else nextpoint = 0
do {
var offs = 9999999999
var pos = -1
var input = form.main.value.substr(nextpoint)
//对每个正则表达式进行匹配
for(var i=0;iregexpArray.length;i++) {
re.compile(regexpArray[i],mode)
var matchArray = re.exec(input)
if(matchArray) {
if(offs matchArray.index) {
offs = matchArray.index
pos = i //保存距离起始位子最近的匹配
}
}
}
if(pos=0) {
re.compile(regexpArray[pos],mode)
var matchArray = re.exec(input)
for(var i=1;imatchArray.length;i++)
matchArray[i] = "$"+i+":"+matchArray[i]
form.reglist.value = "["+(pos+1)+"]"+(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)
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

来源:https://www.tulaoshi.com/n/20160219/1605870.html

延伸阅读
标签: ASP
  14.后向引用 正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。请回想一下,对一个正则表 达式模式或部分模式两边添加圆括号将导致这部分表达式存储到一个临时缓冲区中。可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对这部分正则表达式的保存。 所捕获的每个子匹配都按照在正则表达式模式中...
标签: Web开发
####################### #作者:雨浪 版权所有,翻版说一下 # #QQ:270499458 # ####################### 近段日子几个刚学了正则表达式的朋友问我在asp中怎么用.呵呵.虽然简单,还是写出来吧,正则表达式的基本知识我就不说了.其实已经有...
标签: Web开发
前言 正则表达式是烦琐的,但是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真去阅读这些资料,加上应用的时候进行一定的参考,掌握正则表达式不是问题。 索引 1. 引子 目前,正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境,以...
标签: Web开发
以下这些不是正则表达式的新增对象请参阅对应的Javascript对象的属性 $_属性 参考input  $*属性 参考multiline  $&属性 参考lastMatch  $+属性 参考lastParen  $`属性 参考leftContext  $'属性 参考rightContext compile方法  在脚本运行期间编译正则表达式对象属于...
标签: Web开发
http://blog.csdn.net/laily/category/19548.aspx http://blog.csdn.net/laily/archive/2004/06/30/30525.aspx 微软的正则表达式教程(五):选择/编组和后向引用 http://blog.csdn.net/laily/archive/2004/06/30/30522.aspx 微软的正则表达式教程(四):限定符和定位符 http://blog.csdn.net/laily/archive/2004/06/30/30514.aspx 微软的...

经验教程

201

收藏

67
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部