例1,replace带有变量
replace函数可以使用正则表达式来匹配字符串实现替换。
今天遇到的问题是正则表达式出现了变量,以今天的实际情况为例:
/(^'+arr2[i]+'|)|(|'+arr2[i]+'$)/ arr2[i]为数组元素,是变量 str=str.replace(/(^'+arr2[i]+'|)|(|'+arr2[i]+'$)/,'');
使用这种方式无法替换成功,解决办法:
var reg=eval_r('/(^'+arr2[i]+'\|)|(\|'+arr2[i]+'$)/'); str=str.replace(reg,'');
如果是直接变量我们单独替换可以如下操作
var match_str = 'bitch'; var regex = "/," + match_str + ",/ig"; var target_str = ",abcde,bitch,fghij,"; var val = target_str.replace(eval(regex),","); alert(val);
val应该是:,abcde,fghij,
例2,RegExp模式带有变量
function checkBeginWithChar(str,minlen,maxlen,msg) { Minlen = minlen-1; Maxlen = maxlen-1; var re=new RegExp("^[a-zA-Z]{1}([a-zA-Z0-9]){"+minlen+","+maxlen+"}$"); if (!re.exec(str)) { alert(msg); return false; } return true; }
上面是一个JavaScript函数,可以这样调用:
If(!checkBeginWithChar(“a123df”,6,12,”你输入的PIN码必须以字母开头并且字符数在6—12之间!”)) return false;
这是使用变量的情况,下面这个函数是没有使用变量的情况。
function checkBeginWithChar(str,msg) { var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]){5,50}$/; if (!patrn.exec(str)) { alert(msg); return false; } return true; }
注意:没有变量的时候,正则表达式可以不写成字符串的形式两边分别要有反斜杠;如果使用变量就要用new RegExp()并且里面的字符串没有那两个反斜杠。