当前位置: 首页 > Web前端 > HTML5

JS正则表达式

时间:2023-04-05 00:07:21 HTML5

正则表达式正则表达式是一种字符串运算的逻辑公式,它是利用预先定义的一些特定字符,以及这些特定字符的组合,组成一个“规则字符串”。“规则字符串”用于表达对字符串的一种过滤逻辑,很多编程语言都支持使用正则表达式对字符串进行操作。主要有两个操作:匹配和捕获链接说明正则表达式语法正则表达式创建正则表达式由元字符和修饰符组成,元字符和修饰符用“//”书写。eg:varreg=/d+/g;//表示全局多个数字元字符:\:转义字符^:以某个元字符开头$:以某个元字符结尾\n:匹配一个换行符".":任意字符except\n():分组x|y:x或y中的第一个[xyz]:x或y或z中的一个[^xyz]:三个以外的任何一个字符[a-z]:a和z之间的任何字符[^a-z]:除a和z之外的任意字符\d:表示0-9之间的数字\d:除0-9之间的数字以外的任意字符\b:匹配一个边界字符w1w2\w:任意字符数字、字母和下划线[0-9a-zA-Z_]\s:匹配一个空白字符空格、一个制表符、一个换页符Symbol...Quantifiermetacharacter(数量元字符)*:出现零到多次+:出现一次到多次?:出现零次或一次{n}:出现n次{n,}:出现n到多次{n,m}:出现n到m次。标志符g:全局搜索,记忆法globali:不区分大小写,记忆法ignorem:多行搜索使用正则对象的方法1.test()方法用于检测字符串是否匹配某种模式,如果匹配则返回true,否则返回falseeg:手机号验证2.exec()方法用于检索字符串中正则表达式的匹配。如果匹配,则返回匹配的值,否则返回false。匹配时,返回值与match方法没有g标志时的返回值相同。数组中的第0个表示匹配正则模式的文本,后面n个是对应的抓取文本,最后两个是对象index和input,会从lastIndex指定的字符开始取字符串string常规实例的属性。当exec()找到与表达式匹配的文本时,匹配后它将regex实例的lastIndex属性设置为匹配文本的最后一个字符旁边的位置。是否有g标志对word的exec方法的执行没有影响,但是当有g标志时,可以重复调用exec()方法遍历字符串中所有匹配的文本。当exec()找不到匹配的文本时,它将返回null并将lastIndex属性重置为0varstring="2018.07.23";varregex2=/\b(\d+)\b/gconsole.log(regex2.exec(string));console.log(regex2.lastIndex);console.log(regex2.exec(string));console.log(regex2.lastIndex);console.log(regex2.exec(string));console.log(regex2.lastIndex);console.log(regex2.exec(string));console.log(regex2.lastIndex);其中常规实例的lastIndex属性指示下一个匹配项的起始位置。例如“2017”是第一次匹配,起始下标为0,一共有4个字符,所以本次匹配结束的位置为3,下一次匹配开始的位置为4。从上面的代码可以看出,在使用exec的时候,往往需要使用while循环:varstring="2018.07.23";varregex2=/\b(\d+)\b/g;变量结果;while(result=regex2.exec(string)){console.log(result,regex2.lastIndex);更不用说正则匹配字符的精确匹配了,比如/hello/,只能匹配字符串中的子串“hello”。正则表达式之所以强大,是因为它可以实现模糊匹配。匹配多个数量varstr="cdecddecdddecddddecddddde";varreg=/cd{3,5}e/g;console.log(str.match(reg));贪心和惰性贪心:eg:varstr="123";varreg=/\d+/g;console.log(reg.exec(str));惰性(“//”带“?”的正则表达式)例如:varstr="123";varreg=/\d+?/g;console.log(reg.exec(str));匹配多种情况使用字符组[]来匹配多种情况,其他形式(dDsSwW)可以等价格是这样的。例如:替换例如:读正则不仅可以写正则,还可以看懂别人写的是什么,正则算子的优先级是从上到下,从高到低,所以在分析正则的时候,可以按照优先级,比如/ab?(c|de*)+|fg/因为括号是一个整体,所以/ab?()+|fg/,括号里面的内容可以放在后面再根据分析量词和管道符号的优先级,所以a,b?,()+分析括号中的c|de=>c和d,e管道符号后面的f和g一样可以留言对我来说,努力做到最好。希望大家有什么好的建议,好的文章也可以分享给我。我们一起工作吧!我希望你能分享更多。以下是我的微信公众号。如果您对前端感兴趣,我们可以与您交流: