首頁  >  文章  >  web前端  >  js動態拼接正規表示式的兩種方法_javascript技巧

js動態拼接正規表示式的兩種方法_javascript技巧

WBOY
WBOY原創
2016-05-16 16:57:252651瀏覽

方法一:

做專案的時候可能會遇到用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 "]輸入! " "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 "]輸入! " "e.g "2010" splitChar "11" or "2010" splitChar "03"");
text.value = "";
text.focus();
return false;
}
return true;
}


有一點值得注意:動態拼出腳本字串傳給eval()方法執行時,需要對字元''轉義
方法二:複製程式碼

程式碼如下:


<script><script> n=new Array( ".htm ", ".html ", ".shtml "); <BR>//var pattern1 = new RegExp( "\w \ " n[0] "$ ", "gi "); <BR>var s1= "b.shtml "; <BR>var result = false; <BR>for(var i=0;i <n.length;i ) <BR>{ <BR>pattern1 = new RegExp( "\w \ " n[i] "$ ", "gi "); <BR>result|=pattern1.test(s1); <BR>} <BR>alert(Boolean(result)); </script>
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn