js动态拼接正则表达式的两种方法
2023-06-13 09:15:19 时间
方法一:
做项目的时候可能会遇到用js验证表单输入正确性的需求,这时候就需要用到js的正则表达式。举个例子:比如说要验证月份,格式为:"yyyy-MM",这个正则表达式写起来很简单,实在写不出,也可以Google、百度一把,网上例子一大堆!但是js正则表达式就这样写死也会带来新的问题:如果配置文件的月份格式改了呢?改成"yyyyMM"、或者是"yyyy_MM"...呢??我们是不是要记得去把js中的正则表达式也跟着一遍遍的改呢??
这时候我们就要问了:怎样才能写出动态的正则表达式呢,修改了配置文件,就不需要再去动代码了呢?
笔者翻阅了js手册,没有找到将字符串转换成正则表达式的方法,但是可以用eval();方法动态执行脚本的方式间接解决这个问题!从而写出更加通用的代码!
下面贴出上例的通用解决方案:
复制代码代码如下:
做项目的时候可能会遇到用js验证表单输入正确性的需求,这时候就需要用到js的正则表达式。举个例子:比如说要验证月份,格式为:"yyyy-MM",这个正则表达式写起来很简单,实在写不出,也可以Google、百度一把,网上例子一大堆!但是js正则表达式就这样写死也会带来新的问题:如果配置文件的月份格式改了呢?改成"yyyyMM"、或者是"yyyy_MM"...呢??我们是不是要记得去把js中的正则表达式也跟着一遍遍的改呢??
这时候我们就要问了:怎样才能写出动态的正则表达式呢,修改了配置文件,就不需要再去动代码了呢?
笔者翻阅了js手册,没有找到将字符串转换成正则表达式的方法,但是可以用eval();方法动态执行脚本的方式间接解决这个问题!从而写出更加通用的代码!
下面贴出上例的通用解决方案:
/**
*验证月份表单输入是否合法
*pattern:月份格式字符串
*id:表单id
*/
functionvalidateMonth(pattern,id){
vartext=document.getElementById(id);
varmonthStr=text.value;
varsplitChar="";
if(pattern.length>6)splitChar=pattern.substring(4,pattern.length-2);
eval("varre=/\\d{4}"+splitChar+"\\d{2}$/;");
//varre=/\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();
returnfalse;
}
returntrue;
}
/**
*验证月份表单输入是否合法
*pattern:月份格式字符串
*id:表单id
*/
functionvalidateMonth(pattern,id){
vartext=document.getElementById(id);
varmonthStr=text.value;
varsplitChar="";
if(pattern.length>6)splitChar=pattern.substring(4,pattern.length-2);
eval("varre=/\\d{4}"+splitChar+"\\d{2}$/;");
//varre=/\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();
returnfalse;
}
returntrue;
}
有一点值得注意:动态拼出脚本字符串传给eval()方法执行时,需要对字符"\"转义
方法二:
<script>
varn=newArray(".htm",".html",".shtml");
//varpattern1=newRegExp("\\w+\\"+n[0]+"$","gi");
vars1="b.shtml";
varresult=false;
for(vari=0;i<n.length;i++)
{
pattern1=newRegExp("\\w+\\"+n[i]+"$","gi");
result|=pattern1.test(s1);
}
alert(Boolean(result));
</script>
相关文章
- Fabric.js 拖拽平移画布
- 用JS获取地址栏url参数的方法_js的url是啥
- 【说站】js深度优先遍历的介绍
- js中四舍五入的方法_JS取整
- arraylist遍历 并删除_js遍历list对象
- 牛客网js题库正解 (21-40题)
- js正则表达式校验金额-js正则表达式简单校验方法
- js引擎的执行机制详解
- 如何使用jscythe并通过Node.js的Inspector机制执行任意JS代码
- JS引擎(2):Java平台上JavaScript引擎—Rhino/Nashorn概述
- js中模拟队列详解编程语言
- js操作select控件的几种方法
- 手把手教你自己写一个js表单验证框架的方法
- Js切换功能的简单方法
- js实现addClass,removeClass,hasClass的函数代码
- js中eval详解
- js正则表达式之search方法讲解
- html向js方法传递参数具体实现
- node.js中的events.emitter.removeListener方法使用说明
- node.js中的http.createClient方法使用说明
- node.js中的fs.symlinkSync方法使用说明
- js使用removeChild方法动态删除div元素
- js使用DOM设置单选按钮、复选框及下拉菜单的方法
- Node.js中的事件驱动编程详解
- js中实现多态采用和继承类似的方法
- 页面加载完后自动执行一个方法的js代码
- js实现获取焦点后光标在字符串后