花呗、白条\/信客服:[3 3 1 5 7 5 6 4 4],分期乐提现,xin用卡秒提,、来分期、安逸花、任性付各种额度提现,花呗、白条\/信客服:[3 3 1 5 7 5 6 4 4]专业迅速秒回款,可当面操作,可远程操作!流程简单回款迅速,操作专业不卡单几分钟就搞定!
花了差不多半个月的晚上时间,正则入门学习也步入尾声了,当然正则的学习还将继续。不得不说学习成效非常明显,已能看懂大部分正则以及写出不太复杂的正则,比如帮组长写正则验证文件路径正确性,再如进产品页根据页面地址获取产品id:
let pathname = ‘/webtoprint/dynamicsize-gamebox-2033986.html‘; let productId = pathname.match(/\-(\d+)\./)[1]; //2033986
虽然正则都不难,但是相比之前使用split各种切切切真的要舒服的多,想到这一点就开心。所以如果有缘的你看到这篇作为结束的文章,还是非常推荐静下心花点闲余时间学习正则。
那么在最终章,我们将正则与API结合起来,真正把正则用起来,毕竟学了不用总会忘,忘了再学就巨亏。说在前面,正则学习系列文章均为我阅读老姚《JavaScript正则迷你书》的读书笔记,文中所有正则图解均使用regulex制作。那么本文开始!
贰 ? 正则的四种操作
我们知道正则是一种匹配模式,要么匹配字符,要么匹配位置,正则的核心用处就是在于匹配我们预期的东西。那么拿到了想要的东西能做什么?其实无非就是用于验证,切分,提取以及替换。比如文章开头匹配产品id就是提取我们想要的东西,再如千位分隔符就是将数字替换成我们想要的样子,其实也不难理解,我们来细说这四种操作。
1.验证
谈到验证首先想到的就是表单验证,使用正则验证用户输入字段是否符合规范,比如验证数字密码长度是否为六位,最常用的就是使用test方法:
var regex = /^\d{6}$/; regex.test(123456); //true regex.test(12345); //false regex.test(1234567); //false
除了字符的完整比较验证,有时候我们也需要验证字符中是否包含某个特定字符,这种情况下除了test,我们能用match,search,exec这三个方法来做,比如验证字符中是否包含 ? :
可以使用 test 方法:
var regex = /?/; regex.test(‘123?‘); //true regex.test(‘a?b‘); //false regex.test(‘echo‘); //false
使用match方法,此时返回并非布尔值,而是匹配结果,若要判断有没有只需对比返回值是否等于null即可:
var regex = /?/; ‘123?‘.match(regex); //["?", index: 3, input: "123?", groups: undefined] ‘a?b‘.match(regex); //["?", index: 1, input: "a?b", groups: undefined] ‘echo‘.match(regex); //null
使用search方法,此时返回第一个符合条件字符的索引,若没找到返回-1,所以判断有没有对比是否等于-1即可:
var regex = /?/; ‘?123?‘.search(regex); //0 ‘a?b‘.search(regex); //1 ‘echo‘.search(regex); //-1
使用exec方法,此方法结果与match类似,判断有没有看是否为null即可:
var regex = /?/; regex.exec(‘?123?‘); //["?", index: 0, input: "?123?", groups: undefined] regex.exec(‘a?b‘); //["?", index: 1, input: "a?b", groups: undefined] regex.exec(‘echo‘); //null
当然如果真的是判断有没有某个字符的需求,其实用 indexOf 就可以了,这里也只是列举这些方法的作用。
2.切分
说到切分自然想到字符串切分的split方法,比如:
var str = ‘hello echo‘; var a = str.split(" "); console.log(a, str); //["hello", "echo"] "hello echo"
split方法返回一个切割后的数组,它并不会修改原字符串。其实split接受参数除了字符意外,它还能接受一个正则作为切分条件,比如上面的例子我们也可以写成:
var str = ‘hello echo‘; var a = str.split(/\s/); console.log(a, str); //["hello", "echo"] "hello echo"
3.提取
正如文章开头提取产品id的例子一样,正则提取操作非常使用,而提取就依赖于正则分组存储的特性,所以分组记得一定不能使用非捕获型括号,看个简单的例子:
var regex = /(\d{4})\/(\d{2})\/(\d{2})/; var result = regex.exec(‘2019/12/28‘); //["2019/12/28", "2019", "12", "28", index: 0, input: "2019/12/28", groups: undefined] console.log(result[1]); //2019 console.log(result[2]); //12 console.log(result[3]); //28 // 或直接通过RegExp对象访问
原文地址:https://www.cnblogs.com/dfdf55/p/12113535.html