• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    正则表达式练习器
    复制代码 代码如下:

    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("\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)
    }

    上一篇:17种正则表达式
    下一篇:ubbcode简单实用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    正则表达式练习器 正则,表达式,练习器,正则,