js动态拼接正则表达式的两种方法
方法1:当你的项目,你可能会遇到需要验证的js表单输入的正确性,当需要JS的正则表达式。举个例子:比如,验证月,格式is'yyyy-mm。这个正则表达式非常简单。它不能写。也可以是谷歌和百度。在互联网上有很多例子,但是对JS正则表达式这样写是一个新问题:如果配置文件的月份格式改变了怎么办改变to'yyyymm ',or'yyyy_mm…我们必须记住反复修改js中的正则表达式吗
这时我们要问:我们怎样才能写出动态正则表达式,修改配置文件,又不需要移动代码呢
我透过JS手册并没有找到一种方法将字符串转换为正则表达式,但我可以使用eval()方法间接地解决这个问题。写的更一般的代码!
张贴在上述一般解决方案下面:
复制代码代码如下所示:
*核实月表输入的有效性
*模式:月格式字符串
*身份证:身份证
* /
功能validatemonth(模式,ID){
var text = document.getelementbyid(ID);
无功monthstr = text.value;
无功splitchar = ;
如果(pattern.length > 6)splitchar = pattern.substring(4,pattern.length - 2);
eval(var = / D { 4 } + splitchar + D { 2 } $ /;);
2(4)};
如果(monthstr.match(重新)= = null){
警报()请参阅格式{ + +模式输入!+如2010 + splitchar + 11 或2010 + splitchar + 03 );
text.value = ;
text.focus();
返回false;
}
返回true;
}
复制代码代码如下所示:
*核实月表输入的有效性
*模式:月格式字符串
*身份证:身份证
* /
功能validatemonth(模式,ID){
var text = document.getelementbyid(ID);
无功monthstr = text.value;
无功splitchar = ;
如果(pattern.length > 6)splitchar = pattern.substring(4,pattern.length - 2);
eval(var = / D { 4 } + splitchar + D { 2 } $ /;);
2(4)};
如果(monthstr.match(重新)= = null){
警报()请参阅格式{ + +模式输入!+如2010 + splitchar + 11 或2010 + splitchar + 03 );
text.value = ;
text.focus();
返回false;
}
返回true;
}
有一点值得注意:动态脚本字符串传递给eval法术()方法被执行,转义字符的需要
方法二:
复制代码代码如下所示:
新数组()
/ /无功1型=新的正则表达式( W + + N { 0 } +$
VaR S1 =b.shtml ;
var = false;
对于(var i = 0;i < n.length;i++)
{
1型=新的正则表达式( W + + N {我} +$
结果| = pattern1.test(S1);
}
警报(布尔(结果));