正则表达式练习器

星光灿烂918

星光灿烂918

2016-02-19 13:58

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

代码如下:

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

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


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

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

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

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

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

展开更多 50%)
分享

猜你喜欢

正则表达式练习器

Web开发
正则表达式练习器

正则表达式

Web开发
正则表达式

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

正则表达式口诀 正则表达式学习工具

Web开发
正则表达式口诀 正则表达式学习工具

正则表达式语法

Web开发
正则表达式语法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

正则表达式格式

Web开发
正则表达式格式

正则表达式简介

C语言教程 C语言函数
正则表达式简介

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

ubbcode简单实用

ubbcode简单实用

VC/VB 进行图像数据存储数据库心得

VC/VB 进行图像数据存储数据库心得
下拉加载更多内容 ↓