为了账号安全,请及时绑定邮箱和手机立即绑定

JS正则表达式,请大家帮我看看为啥错误?

JS正则表达式,请大家帮我看看为啥错误?

料青山看我应如是 2019-02-12 21:56:37
写了一个匹配邮箱的正则表达式,不知道为啥在@后面为字母时错误,为数字时正确。w应该既能匹配数字也能匹配字母呀。
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

String#search

String#split

String#match

String#replace

RegExp#test

RegExp#exec

字符串的四个方法,每次匹配时,都是从0开始的,即lastIndex属性始终不变。


而正则实例的两个方法exec、test,当正则是全局匹配时,每一次匹配完成后,都会修改lastIndex。下面让我们以test为例,看看你是否会迷糊:


var regex = /a/g;

console.log( regex.test("a"), regex.lastIndex );

console.log( regex.test("aba"), regex.lastIndex );

console.log( regex.test("ababc"), regex.lastIndex );

// => true 1

// => true 3

// => false 0

注意上面代码中的第三次调用test,因为这一次尝试匹配,开始从下标lastIndex即3位置处开始查找,自然就找不到了。


如果没有g,自然都是从字符串第0个字符处开始尝试匹配:


var regex = /a/;

console.log( regex.test("a"), regex.lastIndex );

console.log( regex.test("aba"), regex.lastIndex );

console.log( regex.test("ababc"), regex.lastIndex );

// => true 0

// => true 0

// => true 0

摘抄自:老姚的文章正则表达式编程-2.4 修饰符g,对exex和test的影响
希望对你有帮助。

查看完整回答
反对 回复 2019-02-19
  • 1 回答
  • 0 关注
  • 383 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信