您的位置:首页 > Web前端 > JavaScript

JavaScriptRegularExpression 转义与替换 需要注意的细节

2008-05-10 12:26 686 查看
/**

* 替换所有字符串

* @param 要替换的字符串

* @param 要被替换的目标字符串

* @param 替换为新的字符串

* @param 是否互略大小写 默认互略

* @return 替换完成后的字符串

*/

function replaceAll(sourceStr, oldStr, newStr, capSens) {

var tem = "ig";

if (capSens != undefined) {

//大小写敏感 tem = "g";

}

var reg = new RegExp(oldStr, tem);

var valueNew = sourceStr.replace(reg, newStr);

return (valueNew);

}

设参与替换的正则表达式为:

var express = //d{4}-//d{2}-//d{2} //d{2}://d{2}://d{2

}

var oldChar="////

";

var newChar="////";

var capSens="true";

var replaceResult = replaceAll(express, oldChar, newStr, capSens);

//replaceResult = '////d{4}-////d{2}-////d{2} ////d{2}:////d{2}:////d{2}';

在此我们可以把转义完成的表达式存储到DB中

当我们在某个表单中想要使用DB中的表达式时我们不需要进行转义

设 已经从DB中取出表达式

var expression = '////d{4}-////d{2}-////d{2} ////d{2}:////d{2}:////d{2}';

var replaceResult = replaceAll(expression,'////','//',true);

var regExp = new RegExp(replaceResult);

var date = '2008-10-20 20:33:33';

var result = regExp.exec(date);

if(result != null) {

alert('Compare Successful!!');

}

·总结:

表达式的转义主要是以'/' 替换为 '/', 正常情况下表达式是以//d{2

,} 等等 但当我们存储到DB时如果不替换,在取出数据并使用时就会出现d{2,} 而我们的转义字符就会被互略(或其它原因)

·主要思路:

把表达式转义字符替换 存储到数据库,在使用时只需再一次把//字符替换 构建RegExp进行使用

平时用不到这么麻烦,但特殊需求时有必要使用.

·需要注意的细节:

在替换转义字符 '//' 时 要清楚记得 //本身也是在转义 真实的表达式是 /d{2, } 类似这样子

我们replaceAll('//d','//','//') 将会得到 ////d 而不是//d

如果要得到//d 就应 replaceAll('//d','////','//')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: