Javascript正規表示式測試網頁 (轉)

amyz發表於2007-11-16
Javascript正規表示式測試網頁 (轉)[@more@]

你平時如何測試正則?直接寫在大段的程式碼中,然後等待執行到那裡,再用alert顯示結果?或者是臨時寫一個頁面,測試完成後把它丟掉?

:namespace prefix = o ns = "urn:schemas--com::office" />

你可以試一下我這個頁面,雖然它很粗糙,但是測試正規表示式也足夠了:))

 

一、說明:

1.  我的本意為交流技術.本人水平很菜.因此所貼出的程式碼中,會有不足之處.

2.  程式碼可任意修改.如果你覺得你修改過的程式碼比我的好,可將它貼出,我非常感謝.

3.  我對script的規範並不很熟悉.我的來自於開發.因此,若你對它有更好的見解,歡迎提出,我非常感謝.

 

二、測試用例:

1. 檢查字串中是否有非數字的字元:

test regex: D

test regex flags: g

test string: 1234g56t78

2. 檢查字串中是否有非0-9、a~z、A-Z、_的字元:

test regex: W

test regex flags: g

test string: i'm a pig! yes I'm!

3. 匹配字串中的實數:

test regex: ([d]+]).([d]+)

test regex flags: g

test string: float1234.58.723c65.183

三、程式程式碼:

regex test page

/**

 * Method 測試正規表示式

 * @param method 接收到的正規表示式類的方法

 */

function check(method)

{

  // 將輸入的正規表示式的標誌轉換為小寫

  form1.flags.value = form1.flags.value.toLowerCase();

 

  // 如果含有不是g、i、m的字元, 則 提示並返回

  if ( form1.flags.value.search(/[^g|i|m]/g) != -1 )

  {

  alert("flags only can be g, i, m");

  return;

  }

 

  // 利用使用者輸入的字串和標誌建立正規表示式

  var re = new RegExp(form1.regex.value, form1.flags.value);

 

  // 獲得並顯示生成的正規表示式的字串形式

  destRegex.innerText = re.toString() + ' ';

 

  // 定義 返回值

  var cr;

 

  ex = "new RegExp('" + form1.regex.value + "', '" + form1.flags.value + "').";

 

  // 根據使用者選擇的方法, 進行相應的

  switch ( method )

  {

  case '0': // 正規表示式的 exec 方法

  cr = re.exec(form1.string.value);

  ex = ex + "exec('" + form1.string.value + "')";

  break;

 

  case '1': // 正規表示式的 test 方法

  cr = re.test(form1.string.value);

    ex = ex + "test('" + form1.string.value + "')";

  break;

 

  case '2': // 字串類的 match 方法

  cr = form1.string.value.match(re);

  ex = "'" + form1.string.value + "'.match(" + re.toString() + ")";

  break;

 

  case '3': // 字串類的 search 方法

  cr = form1.string.value.search(re);

  ex = "'" + form1.string.value + "'.search(" + re.toString() + ")";

  break;

 

  case '4': // 字串類的 replace 方法

  cr = form1.string.value.replace(re);

  ex = "'" + form1.string.value + "'.replace(" + re.toString() + ")";

  break;

 

  case '5': // 字串類的 split 方法

  cr = form1.string.value.split(re);

  ex = "'" + form1.string.value + "'.split(" + re.toString() + ")";

  break;

  }

 

  // 獲得並顯示錶達式

  expression.innerText = ex;

 

  // 獲得並顯示計算結果的型別

  returnType.innerText = typeof(cr);

  // 定義結果

  var result = '';

 

  if ( cr != null && typeof(cr) == '' && cr.length != null ) // 如果計算結果是一個陣列, 則取出所有陣列的值

  {

  for ( i = 0; i < cr.length; i++ )

  {

  result += "array[" + i + "] = '" + cr[i] + "'n";

  }

  }

  else

  if ( cr != null ) // 如果計算結果不為null, 則取出計算結果的值

  {

  result = cr;

  }

 

  // 獲得並顯示結果

  matchResult.innerText = result + ' ';

 

  // 獲得並顯示正規表示式的lastIndex屬性

  lastIndex.innerText = re.lastIndex + ' ';

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

test javascript regex
test regex:
test regex flags:
test string:
method:

 

 

 

 

 

 

 

 

 

 

dest regex:  
dest expression:  
return type:  
result:  
regex lastIndex:  


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-982781/,如需轉載,請註明出處,否則將追究法律責任。

相關文章