实践中Javascript使用RegExp.$1导致trim()自定义函数的一个Bug
2010-03-30 11:43
543 查看
今天帮助同事排除一个页面的问题,碰到一个常用公共自定义函数trim(去掉前后空白字符)
发现如果参数是空字符串,输出的结果是前一个测试的字符串 o(╯□╰)o
简化一些测试代码:
结果很清楚了,如果正则不匹配字符串,不会改变RegExp对象的分组属性
解决方案是加一个判断。
function trim(str) { var re = //s*(/S[^/0]*/S)/s*/; re.exec(str); return RegExp.$1; } alert(trim("1234 ")); alert(trim("")); /* 推荐的方法 function trim(str) { return str.replace(/^/s+|/s+$/, ""); } */
发现如果参数是空字符串,输出的结果是前一个测试的字符串 o(╯□╰)o
简化一些测试代码:
/(/d+)/.exec("12345"); alert(RegExp.$1); /(/d+)/.exec("abcde"); alert(RegExp.$1);
结果很清楚了,如果正则不匹配字符串,不会改变RegExp对象的分组属性
function trim(str) { var re = //s*(/S[^/0]*/S)/s*/; if (!re.exec(str)) return str; return RegExp.$1; }
解决方案是加一个判断。
相关文章推荐
- javascript 一个自定义长度的文本自动换行的函数
- 列出一个工作簿中所有已使用的自定义函数
- 1、使用javascript代码写出一个函数:实现传入两个整数后弹出较大的整数
- kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询
- 使用JavaScript写的一个删除HTML代码的函数
- 在javascript中调用vbscript的函数,构造一个javascript版的trim 函数
- Javascript中调用一个函数(对象),使用new或者直接调用有什么区别?
- 用javascript 写个函数返回一个页面里共使用了多少种HTML 标签
- [原创]java WEB学习笔记40:简单标签概述(背景,使用一个标签,标签库的API,SimpleTag接口,创建一个自定义的标签的步骤 和简单实践)
- javascript的trim,ltrim,rtrim自定义函数
- JS学习笔记1——不要使用JavaScript内置的parseInt()和Number()函数,利用map和reduce操作实现一个string2int()函数
- JavaScript自定义函数中字符串参数使用的经验
- 一个ArcGIS Javascript API的BUG和处理办法 - 调用两次Draw工具条deactivate方法导致的错误
- 每天一个JavaScript实例-使用带有定时器的函数闭包
- javascript实现的一个自定义长度的文本自动换行的函数。
- Oracle使用cast() 函数的一个BUG
- Codewars简单使用和 其中一道题,用JavaScript实现一个函数,求一个正数的次大数字,拿自己的解法和大神相比,简直对不起JavaScript给我提供的 那么多便利
- 直接使用临时变量导致的一个bug记录
- 使用C++标准库sort自定义比较函数导致死循环问题
- javascript实现的一个自定义长度的文本自动换行的函数。