萬盛學電腦網

 萬盛學電腦網 >> 腳本專題 >> javascript >> js動態拼接正則表達式的兩種方法

js動態拼接正則表達式的兩種方法

 這篇文章主要介紹了js動態拼接正則表達式的兩種方法,需要的朋友可以參考下

方法一:    做項目的時候可能會遇到用js驗證表單輸入正確性的需求,這時候就需要用到js的正則表達式。舉個例子:比如說要驗證月份,格式為:'yyyy-MM',這個正則表達式寫起來很簡單,實在寫不出,也可以Google、百度一把,網上例子一大堆!但是js正則表達式就這樣寫死也會帶來新的問題:如果配置文件的月份格式改了呢?改成'yyyyMM'、或者是'yyyy_MM'...呢??我們是不是要記得去把js中的正則表達式也跟著一遍遍的改呢??    這時候我們就要問了:怎樣才能寫出動態的正則表達式呢,修改了配置文件,就不需要再去動代碼了呢?    筆者翻閱了js手冊,沒有找到將字符串轉換成正則表達式的方法,但是可以用eval();方法動態執行腳本的方式間接解決這個問題!從而寫出更加通用的代碼!    下面貼出上例的通用解決方案:   代碼如下: /**  * 驗證月份表單輸入是否合法  * pattern : 月份格式字符串  * id : 表單id  */  function validateMonth(pattern, id) {  var text = document.getElementById(id);  var monthStr = text.value;  var splitChar = "";  if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2);  eval("var re = /d{4}" + splitChar + "d{2}$/;");  //var re = /d{4}-d{2}$/;  if(monthStr.match(re) == null) {  alert("請參考格式[" + pattern + "]輸入!n" + "e.g "2010" + splitChar + "11" or "2010" + splitChar + "03"");  text.value = "";  text.focus();  return false;  }  return true;  }     代碼如下: /**  * 驗證月份表單輸入是否合法  * pattern : 月份格式字符串  * id : 表單id  */  function validateMonth(pattern, id) {  var text = document.getElementById(id);  var monthStr = text.value;  var splitChar = "";  if(pattern.length > 6) splitChar = pattern.substring(4, pattern.length - 2);  eval("var re = /d{4}" + splitChar + "d{2}$/;");  //var re = /d{4}-d{2}$/;  if(monthStr.match(re) == null) {  alert("請參考格式[" + pattern + "]輸入!n" + "e.g "2010" + splitChar + "11" or "2010" + splitChar + "03"");  text.value = "";  text.focus();  return false;  }  return true;  }    有一點值得注意:動態拼出腳本字符串傳給eval()方法執行時,需要對字符''轉義    方法二:   代碼如下: <script>  var n=new Array( ".htm ", ".html ", ".shtml ");  //var pattern1 = new RegExp( "w+ "+n[0]+ "$ ", "gi ");  var s1= "b.shtml ";  var result = false;  for(var i=0;i <n.length;i++)  {  pattern1 = new RegExp( "w+ "+n[i]+ "$ ", "gi ");  result|=pattern1.test(s1);  }  alert(Boolean(result));  </script> 
copyright © 萬盛學電腦網 all rights reserved