动态拼接,正则表达式
web前端-js教程
方法一: 仿折800app源码,vscode打开乱码,ubuntu sudo,网页出现tomcat,sqlite多表多字段效率,js标尺插件,web前端框架技术实训心得,免费看漫画的app爬虫,图片裁剪 上传 php,湖北seo推广策划,discuz 无法认证网站,易语言打开网页代码,织梦模板 首页调用lzw
做项目的时候可能会遇到用js验证表单输入正确性的需求,这时候就需要用到js的正则表达式。举个例子:比如说要验证月份,格式为:’yyyy-MM’,这个正则表达式写起来很简单,实在写不出,也可以Google、百度一把,网上例子一大堆!但是js正则表达式就这样写死也会带来新的问题:如果配置文件的月份格式改了呢?改成’yyyyMM’、或者是’yyyy_MM’…呢??我们是不是要记得去把js中的正则表达式也跟着一遍遍的改呢?? 全自动挂机赚钱软件源码,vscode调试代码查询变量,ubuntu手动安装,tomcat部署静态页,sqlite all,动漫网页设计模版,asp网站 没有数据库 管理员密码,电商平台服务器放国内还是香港,谷歌下载网页源码插件,前端开发工作中对框架有哪些要求,pas爬虫,php 重复字符串,上海排名seo公司,springboot订阅机制,织梦顶一下标签,asp.net 电子商务网站,动态网页设计源代码,tab模板,文章发布的后台,生成静态页面的技术,c进销存管理系统源码,小波图像去噪程序lzw
这时候我们就要问了:怎样才能写出动态的正则表达式呢,修改了配置文件,就不需要再去动代码了呢? 互站网的源码怎么样,vscode 选中一个字符,ubuntu 14壁纸,不可缺少的tomcat监控,web爬虫市场,php 静态文件版本配置,珠海关键词seo代运营lzw
笔者翻阅了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()方法执行时,需要对字符’\’转义
方法二:
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));