首页前端开发其他前端知识正则表达式练习器

正则表达式练习器

时间2024-02-01 11:53:02发布访客分类其他前端知识浏览1031
导读:收集整理的这篇文章主要介绍了正则表达式练习器,觉得挺不错的,现在分享给大家,也给大家做个参考。 复制代码 代码如下: <HTML><HEAD><TITLE&...
收集整理的这篇文章主要介绍了正则表达式练习器,觉得挺不错的,现在分享给大家,也给大家做个参考。 复制代码 代码如下:

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.se@R_406_2413@(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("\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>


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

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

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

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

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: ubbcode简单实用下一篇:17种正则表达式猜你在找的正则表达式相关文章 去除内容中的html2022-04-16Python正则表达式保姆式教学详细教程2022-04-16十分钟上手正则表达式 上篇2022-04-16十分钟上手正则表达式 下篇2022-04-16深入浅出正则表达式中的边界\b和\B2022-04-16轻松入门正则表达式之非贪婪匹配篇详解2022-04-16轻松掌握正则表达式findall函数详解2022-04-16正则表达式用法详解2022-04-1636个正则表达式(开发效率提高80%)2022-04-16Python正则表达式指南 推荐2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 正则表达式练习器
本文地址: https://pptw.com/jishu/595365.html
将 html 转成 ubb代码的小脚本 ubbcode简单实用

游客 回复需填写必要信息