我是瘦子


  • 首页

  • 归档

  • 标签

  • 搜索
close
我是瘦子

JavaScript 相同的正则多次调用 test() 返回的值却不同的问题

发表于 2019-04-25 | 阅读次数

代码如下:

1
2
3
var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.test(15328044636)); // => true
console.log(reg.test(15328044636)); // => false

问题原因

这是因为正则 reg 的 g 属性,设置的全局匹配。RegExp 有一个 lastIndex 属性,来保存索引开始位置。上面的问题,第一次调用的 lastIndex 值为0,到了第二次调用,值变成了11。如果正则匹配失败,lastIndex 会被重置为 0。

阅读全文 »
我是瘦子

JavaScript 正则表达式

发表于 2019-04-25 | 阅读次数

在 JavaScript 中,正则表达式(Regular Expressions)也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、replace、search 和 split 方法。

创建一个正则表达式

你可以使用以下两种方法之一构建一个正则表达式:
使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示:

1
2
3
var regex = /ab+c/;

var regex = /ab+c/gi;

或者调用 RegExp 对象的构造函数,如下所示:

1
2
3
let regex = new RegExp("ab+c");

let regex = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/, "gi");
阅读全文 »
我是瘦子

灵活运用 JavaScript 开发技巧

发表于 2019-03-01 | 阅读次数

Array Skill

统计元素个数

1
2
3
4
5
6
const arr = [0, 1, 1, 2, 2, 2];
const count = arr.reduce((t, c) => {
t[c] = t[c] ? ++ t[c] : 1;
return t;
}, {});
// count => { 0: 1, 1: 2, 2: 3 }
阅读全文 »
1…34
I am a thin man

I am a thin man

那些玩笑话中,总掺杂着真心话。

33 日志
23 标签
RSS
© 2016 - 2020 I am a thin man
由 Hexo 强力驱动
主题 - NexT.Pisces
本站访客数人次 本站总访问量次