js之正则的坑
2018-12-19 01:44:41来源:博客园 阅读 ()
首先给一个神奇的图:
我的反应,精分吧!一会儿true一会儿false的。。。
后来发现,把g去掉后就正常了,那这是为什么呢??lastIndex惹得鬼!
正文: lastIndex
全局正则表达是,有一个属性:lastIndex,这个属性是用来存放上一次匹配文本之后的第一个字符的位置。
exec()和test()方法,都是以lastIndex属性中存的位置,作为下次正则匹配检索的起点。这也就是为什么会出现两次不一样的结果了。
解决办法:使用strin.search(reg)来替换test()了。
字面量 VS RegExp()
js创建正则有两种方法,一种直接字面量,另外一种new RegExp()。
// 正则字面量 var pattern1 = /\d+/; // 构造 RegExp 实例,以字符串形式传入正则 var pattern2 = new RegExp('\\d+');
但是,需要注意的是,使用字面量方法,每次都会为其创建一个新的正则表达式对象。因此,要想提高性能,可以将正则先保存在一个变量中,而不是每次都写一遍:
// 每次都会新建一个正则表达式对象
console.log(/abc/.test('a')); console.log(/abc/.test('ab')); console.log(/abc/.test('abc')); var pattern = /abc/; console.log(pattern.test('a')); console.log(pattern.test('ab')); console.log(pattern.test('abc'));
在循环中谨慎使用正则(详细请移步参考文章)
参考文章:https://juejin.im/post/5b4627a7f265da0f8759199b
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- jQuery异步提交表单的两种方式 2020-03-12
- 默认让页面的第一个控件选中的javascript代码 2020-02-20
- 将数组扁平化并去除其中重复数据,最终得到一个升序且不重复 2019-08-14
- vue.js(4)--字符串跑马灯 2019-08-14
- 在javascript对象内搜索,貌似是一个新鲜的话题。 2019-08-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash