浅入正则(一)
正则表达式一直作为我的痛点,没有系统的学习和了解,之前部门有本500多页的书叫《精通正则表达式》,一直没勇气拿起来。到后来业务中需要正则的地方越来越多,不忍心老找人帮忙写正则了。找了资料先看着,至少自己先入个门。
实例化RegExp对象实例化RegExp对象同实例化其他JavaScript内置对象一样,分别有字面量和构造函数两种方法: var reg1 = /d/g; //全局匹配数字 var reg2 = new RegExp("D","g"); //全局匹配非数字 RegExp对象原型方法类似Array/String/Function都有自己的原型方法,RexExp对象同样有自己的原型方法。 test不管正则6不6,test方法一定都会用: /d/g.test("abc"); //false /d/g.test("123"); //true exec这个方法很强大,但是理解起来有点难,简单说,用法是: [ 0: "与正则表达式匹配的文本",1: "与正则表达式第一个分组匹配的文本",//分组就先理解为一个括号为一个分组 2:" 与正则表达式第二个分组匹配的文本",3: "···以此类推" ] //来个例子: var reg1 = /([a-zA-Z]d)+([u4e00-u9fa5])+/; //匹配 (大小写字母连着一个数字) 至少一次 (再连着汉字) 至少一次 var str1 = "a11B2老cd3李e45好"; var result = reg1.exec(str1); console.log(result); //["B2老","B2","老"] 例子中正则匹配数字的结果是
var reg2 = /([a-zA-Z]d)+([u4e00-u9fa5])+/g; //匹配 (大小写字母连着一个数字) 至少一次 (再连着汉字) 至少一次 var str2 = "a11B2老cd3李e45好"; var result1 = reg2.exec(str2); var result2 = reg2.exec(str2); var result3 = reg2.exec(str2); console.log(result1,result2,result3); //输出: ["B2老","老"] //index: 3 ["d3李","d3","李"] //index: 7 null toString方法同 var reg3 = /d/g; var reg4 = new RegExp("d","g"); reg3.toString(); //"/d/g" reg4.toString(); //"/d/g" RegExp对象属性
var reg5 = /d/g; var str5 = "a1bc2e3fj"; console.log(reg5.lastIndex); //0 console.log(reg5.test(str5),reg5.lastIndex); //true 2 console.log(reg5.test(str5),reg5.lastIndex); //true 5 console.log(reg5.test(str5),reg5.lastIndex); //true 7 console.log(reg5.test(str5),reg5.lastIndex); //false 0 console.log(reg5.test(str5),reg5.lastIndex); //true 5 在第5行中,结果为false,因为第四行中的匹配成功后,lastIndex为7,也就是下一次是从f开始匹配,所以匹配失败,返回false,并把lastIndex置为0 浅入正则(二):字符的含义和使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |