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

写了一个匹配邮箱的正则表达式,不知道为啥在@后面为字母时错误,为数字时正确。
w应该既能匹配数字也能匹配字母呀。

https://img3.mukewang.com/5c6bb03900016cd303080223.jpg

料青山看我应如是
浏览 386回答 1
1回答

犯罪嫌疑人X

String#searchString#splitString#matchString#replaceRegExp#testRegExp#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的影响希望对你有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript