一個非常好的Regex練習器

來源:互聯網
上載者:User
正則     Regex的用途很廣泛,但要熟練掌握就不是一件容易的事情了。為此,我編寫了這個練習器用來協助學習。
    請多指教!

*********將以下代碼複製到 RegExp.htm 即可 **********
<HTML>
<HEAD>
<TITLE>Regex練習器</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()  //建立Regex對象
var nextpoint = 0      //匹配時的位移量
//設定Regex
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)
}
//設定當前使用的Regex
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:9p



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。