JavaScript有两种创建正则表达式的方法>varregexConst=newRegExp('abc');//构造方法>varregexLiteral=/abc/;//在字面量方法中有一点要注意,字面量声明是在//中声明的,构造函数声明传入的参数是一个字符串。如果遇到像\n这样的转义字符,就需要双重转义变成\\n。下面列举一些例子:正则表达式相关函数test():RegExp对象提供的方法。检索字符串中指定的值。匹配成功则返回true,否则返回falsevarregex=/hello/;varstr='helloworld';varresult=regex.test(str);console.log(result);exec():提供的方法通过RegExp对象。检索字符串中指定的值。匹配成功返回数组,匹配失败返回nullvarreg=/hello/;console.log(reg.exec('hellojs'));//['hello']console.log(reg.exec('javascript'));//nullmatch():字符对象提供的方法。获取字符串中的指定值,如果匹配成功则返回一个存放匹配结果的数组,否则返回null。这里需要注意一点,如果不设置全局匹配g,返回的数组只会存储第一个匹配成功的值。varreg1=/javascript/i;varreg2=/javascript/ig;console.log('你好JavascriptJavascriptJavascript'.match(reg1));//['Javascript']console.log('你好JavascriptJavascriptJavascript'.match(reg2));//['Javascript','Javascript','Javascript']search():字符对象提供的方法。检索字符串中的指定值,如果匹配成功,则返回第一个匹配成功的字符串片段的起始位置,否则返回-1。varreg=/javascript/i;console.log('helloJavascriptJavascriptJavascript'.search(reg));//6replace():字符对象提供的方法。替换与正则表达式匹配的子字符串并返回替换后的字符串。当没有设置全局匹配g时,只替换第一个匹配成功的字符串片段。varreg1=/javascript/i;varreg2=/javascript/ig;console.log('helloJavascriptJavascriptJavascript'.replace(reg1,'js'));//hellojsJavascriptJavascriptconsole.log('helloJavascriptJavascriptjavascript'.replace(reg2,'js'));//hellojsjsjssplit():角色对象提供的方法。将字符串拆分为字符串数组。varreg=/1[2,3]8/;console.log('hello128Javascript138Javascript178Javascript'.split(reg));//['hello','Javascript','Javascript178Javascript']最简单的正则表达式varregex=/hello/;console.log(regex.test('helloworld'));//真正的修饰符有3个:i,g,m,可以同时出现,无先后顺序(即gi相同asig),请参考下面修饰符说明:i忽略大小写匹配g全局匹配,即匹配一个然后继续匹配直到结束m多行匹配,即换行后不停止匹配遇到,直到结束例子:'abc'.match(/abc/);//['abc']'abcd'.match(/abc/);//没有/g的['abc']只返回第一个成功的匹配值'abcdabc'.match(/abc/g);//['abc','abc']'abCabc'.match(/abc/gi);//['abc','abc']'abC\nabc'.match(/abc/gim);//['abc','abc']\n为换行符,方括号[]用法部分元字符描述示例:'aBcdefg'.match(/[a-z]+/);//["a"]'aBcdefg'.match(/[a-z]+/i);//["aBcd"]'aBcdefg'.match(/[a-z]+/g);//["a","cd","efg"]'aBcdefg'.match(/[a-z]+/gi);//["aBcd","efg"]'aB\ncd\nefg'.match(/^[a-z]+/m);//["a"]'aB\ncd\nefg'.match(/^[a-z]+/g);//["a"]'aB\ncd\nefg'.match(/^[a-z]+/gm);//["a","cd"]//注意不是["a","cd","efg"]'adobe2016'.match(/\d+|[a-z]+$/g);//["2016"]'adobe'.match(/\d+|[a-z]+$/g);//["adobe"]'adobe2016ps'.match(/\d+|^[a-z]+/g);//["adobe","2016"]总结了^:起始位置在[]中的用法:'adobe2016'.match(/^[a-zA-Z]+/);//["adobe"]在正则中双斜杠的起始位置:'adobe'.match(/[^abc]/g);//["d","o","e"]用在带|的字符中:'adobe2016ps'.match(/\d+|^[a-z]+/g);//["adobe","2016"]别处:'12a^eee'.match(/a\^/g);//['a^']表示所有字母,不区分大小写:'adobe-PS'.match(/[a-z]/gi);//["a","d","o","b","e","P","S"]'adobe-PS'.match(/[a-zA-Z]/g);//["a","d","o","b","e","P","S"]大多数隐式概念正则匹配匹配单个字符:'adobe2016'.match(/[a-z]/g)//["a","d","o","乙","e"]匹配结果的一小部分是字符串而不是单个字符:'aBcdefg'.match(/[a-z]+/i);//["aBcd"]两条规则相邻,表示匹配时,这两个字符是相连的:'adobe-2016'.match(/[a-g\-]/g);//["a","d","b","e","-"]//要匹配连字符-本身,您需要使用反斜杠对'addo2-ado12os3'进行转义。匹配(/o\天/克);//['o2','o1']消耗字符的概念:如下本例不是["adobw12px","ps15test"],因为ps这两个字符已经消耗了'adobe12ps15test'.match(/[a-z]+\d+[a-z]+/);//["adobe12ps"]匹配方式默认是贪心的,尽可能匹配搜索到的字符串:'aBcdefg'.match(/[a-z]+/gi);//["aBcd","efg"]'a3aaa12bbaaaaaaa34'.match(/a{2,4}\d+/g);//["aaa12","aaaa34"]a{2,4}:2到4a,后面会详细介绍大括号的用法意思字符。匹配任何单个字符,除了换行符和终止符'1+0.2*2=1.4'.match(/.{2}/g);//["1+","0.","2*","2=","1."]\w匹配任意单词字符(数字、字母、下划线),等价于[A-Za-z0-9_]'ad34~!@$ps'.match(/\w/g);//["a","d","3","4","p","s"]\W匹配任意单词字符,与\w相反,相当于1'ad34~!@$ps'.匹配(/\W/g);//["~","!","@","$"]\d匹配数字,等价于[0-9]'ps6'.match(/\d/g);//["6"]\D匹配非数字,等价于[0-9]'ps6'.match(/\D/g);//["p","s"]\s匹配空白字符,主要是(\n,\f,\r,\t,\v),注意'a\sb'中的\s还是字符s,所以'a\sb'.match(/\s/g)返回null'adobeps'.match(/\s/g);//[""]\S匹配非空白字符,与\s'adobeps'.match(/\S/g)相反//["a","d","o","b","e","p","s"]\b匹配单词边界,注意由连续的数字、字母或下划线组成的字符string将考虑单词'adobe(2016)ps6.4'.match(/\b(\w+)/g);//["adobe","2016","ps6","4"]\B匹配非词边界,仔细理解下面例子和\b'adobe(2016)ps6.4'.match(/\B(\w+)/g);//["dobe","016","s6"]\0匹配NUL字符'\0'.match(/\0/);//["NUL"]\n匹配换行符(编码:10,换行符)'adobe\nps'.match(/\n/).index;//5\f匹配换页字符'adobe\fps'.match(/\f/).index;//5\r匹配回车符(编码:13,回车)'adobe\rps'.match(/\r/).i指数;//5\t匹配tab字符,键盘tab对应字符'adobe\tps'.match(/\t/).index;//5\v匹配垂直制表符'adobe\vps'.match(/\v/).index;//5\xxx匹配八进制数指定的字符'a'xxx.charCodeAt(0).toString(8);//"141"'adobeps'.match(/\141/g);//["a"]\xdd匹配十六进制数指定的字符'a'dd.charCodeAt(0).toString(16);//"61"'adobeps'.match(/\x61/g);//["a"]\uxxxx匹配十六进制数xxxx指定的Unicode字符。注意位数不够,需要加0'a'.charCodeAt(0).toString(16);//"61"'adobeps'.match(/\u0061/g);//["a"]量词规范n+匹配字符串'adobepaas'.match(/a+\w+/g);//["adobe","aas"]n*匹配包含零个或多个的字符串'ab3aa12bb'n.match(/a*\d+/g);//["3","aa12"]n?匹配包含零个或一个n'ab3aa12bb'.match(/a?\d+/g)的字符串;//["3","a12"]n{x}匹配包含xn个连续A串的字符串'ab3aa12bbaaa34'.match(/a{2}\d+/g);//["aa12","aa34"]n{x,y}匹配包含至少x个连续且最多连续y个字符串的n'a3aaa12bbaaaaaaa34'.match(/a{2,4}\d+/g);//["aaa12","aaaa34"]n{x,}匹配字符串'a3aaa12bbaa4'.match(/a{2,}\d+/g);//["aaa12","aa4"]by由上可知,下面的表达式1和表达式2等价于括号()用法分组的用法,即捕获的用法:'https://baidu.com'.match(/https:\/{2}\w+\.com$/g);//['https://baidu.com']'https://baidu.com'.match(/(https):\/{2}\w+\.(com)$/g);//['https://baidu.com']捕获的含义:可以用RegExp.$1捕获,与|'https://baidu.com'.match(/(http|https):\/{2}\w+\.(com|cn)$/g);//['https://baidu.com']不抓取usage,RegExp抓不到。$1到'https://baidu.com'.match(/(?:http|https):\/{2}\w+\.(com|cn)$/g);//['https://baidu.com']反斜杠用法斜杠:/(大写字符左边)需要转义,因为常规的文字写法是两个斜杠反斜杠:\(大写字符右边)不需要转义//转义特殊字符的作用:'11+2=13'.匹配(/\d+\+/g);//["11+"]'(11+2)*2=26'.match(/\(\d+\+\d+\)/g);//["(11+2)"]//斜线需要转义,反斜线不需要转义:'pathC:\Windows\System32'。匹配(/([a-zA-Z]:\\\w+)/g);//null'pathC:\\Windows\\System32'.match(/([a-zA-Z]:\\\w+)/g);//["C:\\Windows"]'https://baidu.com'.match(/(http|https):\/\/\w+\.(com|cn)$/g);//['HTtps://baidu.com']Usageofquestionmark(?)(?:n)表示非捕获组//不使用括号时,'adobe12ps15test'.match(/[a-z]+\d+[a-z]+/);//["adobe12ps"]//使用方括号对'adobe12ps15test'进行分组.match(/[a-z]+(\d+)([a-z]+)/);//["adobe12ps","12","ps"]'adobe12ps15test'.match(/[a-z]+(?:\d+)([a-z]+)/);//["adobe12ps","ps"]//上面的语句好像不用(?:)也可以得到相同的结果,即:'adobe12ps15test'.match(/[a-z]+\d+([a-z]+)/);//["adobe12ps","ps"]//注意,但是要求要匹配字母之间当规则比较复杂的时候,如果要匹配字母,字母可以是1或者3,但是你不不需要1和3'adobe11ps15test'.match(/[a-z]+(1|3)+([a-z]+)/);//["adobe11ps","1","ps"]//如果你不想在返回中包含数字怎么办,你可以使用非捕获'adobe11ps15test'.match(/[a-z]+(?:1|3)+([a-z]+)/);//["adobe11ps","ps"](?=n)匹配任何后跟字符n的字符串,但n'adobe12ps15test'不包含在返回值中。匹配(/[a-z]+(?=\d)/g);//["adobe","ps"](?!n)匹配任何后面没有跟字符n的字符串,返回不包含n'adobe12ps15test'.match(/[a-z]+(?!\d)/克);//["adob","p","test"](?<=n)匹配任何紧跟字符n的字符串,返回不包含n'adobe12ps15test'.match(/(?<=\d)[a-z]+/g);//["ps","test"](?.*//1>|<(.*)///>/28。匹配前导空格和尾随空格的正则表达式表达式:(^/s*)|(/s*$)29。匹配邮件地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*30。匹配URL的正则表达式:^[a-zA-z]+://(//w+(-//w+)*)(//.(//w+(-//w+)*))*(//?//S*)?31。匹配账号是否合法(以字母开头,允许5个-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$32。匹配国内电话号码:(/d{3}-|/d{4}-)?(/d{8}|/d{7})?33。匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$34。只输入数字:^[0-9]*$35。只能输入n位数字:^/d{n}$36。至少只能输入n位数字:^/d{n,}$37。只有m~n个数字的数字:^/d{m,n}$38。只能输入以零和非零开头的数字:^(0|[1-9][0-9]*)$39。只能输入两位数带小数点的正实数:^[0-9]+(.[0-9]{2})?$40。只能输入小数点后1~3位的正实数:^[0-9]+(.[0-9]{1,3})?$41。只能输入非零正整数:^/+?[1-9][0-9]*$42。只能输入非零负整数:^/-[1-9][0-9]*$43。只能输入长度为3的字符:^.{3}$44。只能输入由26个英文字母组成的字符串:^[A-Za-z]+$45。只能输入由26个大写英文字母组成的字符串:^[A-Z]+$46。只能输入由26个小写英文字母组成的字符串:^[a-z]+$47。只能输入由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$48。只能输入数字和26个英文字母或下划线:^/w+$49。验证用户密码(正确格式为:以字母开头,长度为5-17之间,只能包含字符、数字和下划线)^[a-zA-Z]/w{5,17}$50。验证是否包含^%&'、;=?$/"等字符:[^%&',;=?$/x22]+51,只能输入汉字:^[/u4e00-/u9fa5]{0,}$52,只有汉字、数字、字母和下划线不能下划线开头和结尾^(?!_)(?!.*?_$)[a-zA-Z0-9_/u4e00-/u9fa5]+$53,只包含汉字、数字、字母、下划线,下划线位置不限^[a-zA-Z0-9_/u4e00-/u9fa5]+$54,2~4个汉字@"^[/u4E00-/u9FA5]{2,4}$参考学习资料:https://cloud.tencent.com/dev...https://www.runoob.com/regexp...A-Za-z0-9_?
