如果可以挂个“新手上路”或者贴张“新手上路”,打死也不
不是第一次用正则表达式甚至这个表达式都是完完全全一模一样的写过一次,写在大二与大三的暑假间隙
<script type="text/javascript">
function del_str(id) {
var str = "|11|2|1|3";
var str_patt="var patt =/\\|"+id+"(?=\\|)|\\|"+id+"$/;"
eval(str_patt);
var result = patt.exec(str); //当然这里想返回true或者false就用test()
alert(result );
}
del_str(4);
</script>
匹配一个以“|”开头,加上id的字符串,为了避免要找完整的“|1”却误匹配了“|11”中的“|1”所以用了零宽断言即:(?=表达式),并且为了避免末尾的字符串没办法匹配零宽的“|”字母所以加上了匹配字母串末尾的“$”,理论上$也应该是零宽的但是本身就是空白的就不了。
因为要匹配特殊字符“|”,所以用了“\”,要不然就变成分支的语句了,也就是|前或者|后面的语句有一个匹配都算成功。因为要加上参数所以使用了eval语句来执行给patt赋值建立正则表达式,所以“\”也要转义一下就变成两个\了。
如此简单的正则表达式匹配我今天写了一个多小时,究其原因主要在于不把 | 当特殊字符,自己闷头测试了半天结果总是出乎意料,学业不精,更加恶劣的就是曾经有写过。
如果拿现在的编程水平作为一个正则表达式,与两年前的编程水平做个test,结果返回true;做个exec,返回全部。。
还是挂上新手上路,其实贴上更好些,行动起来也不会摇摇晃晃的看着碍眼。
by JUBaiLan – 橘白婪
标签: 正则表达式