2023年6月21日发(作者:)
正则表达式表单验证(姓名、性别、电话、邮箱、密码)及知识点总结正则表达式(regular expression)是⼀种表达⽂本模式(即字符串结构)的⽅法,有点像字符串的模板,常常⽤来按照“给定模式”匹配⽂本。本⼈在学习之后写了⼀个表单验证demo,话不多说,上代码
正则表达式表单验证
实例⽅法()正则实例对象的test⽅法返回⼀个布尔值,表⽰当前模式是否能匹配参数字符串/cat/.test('cats and dogs') // true
()正则实例对象的exec⽅法,⽤来返回匹配结果。如果发现匹配,就返回⼀个数组,成员是匹配成功的⼦字符串,否则返回null。exec⽅法的返回数组还包含以下两个属性:input:整个原字符串。index:整个模式匹配成功的开始位置(从0开始计数)。var r = /a(b+)a/;var arr = ('_abbba_aba_');arr // ["abbba", "bbb"] // // "_abbba_aba_"
字符串的实例⽅法(reg)匹配成功返回⼀个数组,匹配失败返回null。如果正则表达式带有g修饰符,则该⽅法与正则对象的exec⽅法⾏为不同,会⼀次性返回所有匹配成功的结果。
()字符串对象的search⽅法,返回第⼀个满⾜条件的匹配结果在整个字符串中的位置。如果没有任何匹配,则返回-1
e()字符串对象的replace⽅法可以替换匹配的值。它接受两个参数,第⼀个是正则表达式,表⽰搜索模式,第⼆个是替换的内容。
()字符串对象的split⽅法按照正则规则分割字符串,返回⼀个由分割后的各个部分组成的数组。该⽅法接受两个参数,第⼀个参数是正则表达式,表⽰分隔规则,第⼆个参数是返回数组的最⼤成员数。
字符点字符点字符(.)匹配除回车(r)、换⾏(n) 、⾏分隔符(u2028)和段分隔符(u2029)以外的所有字符。
位置字符^ 表⽰字符串的开始位置$ 表⽰字符串的结束位置
选择符竖线符号(|)在正则表达式中表⽰“或关系”(OR),即cat|dog表⽰匹配cat或dog。
预定义模式某些常见模式的简写⽅式d 匹配0-9之间的任⼀数字,相当于[0-9]。D 匹配所有0-9以外的字符,相当于[^0-9]。w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]。W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]。s 匹配空格(包括换⾏符、制表符、空格符等),相等于[ trnvf]。S 匹配⾮空格的字符,相当于[^ trnvf]。b 匹配词的边界。B 匹配⾮词边界,即在词的内部。 [Ss]指代⼀切字符
重复类模式的精确匹配次数,使⽤⼤括号({})表⽰。{n}表⽰恰好重复n次{n,}表⽰⾄少重复n次{n,m}表⽰重复不少于n次,不多于m次。
量词符(写在指定字符后⾯) 问号表⽰某个模式出现0次或1次,等同于{0, 1}。* 星号表⽰某个模式出现0次或多次,等同于{0,}。+ 加号表⽰某个模式出现1次或多次,等同于{1,}。
贪婪模式三个量词符,默认情况下都是最⼤可能匹配,即匹配直到下⼀个字符不满⾜匹配规则为⽌。这被称为贪婪模式。如果想将贪婪模式改为⾮贪婪模式,可以在量词符后⾯加⼀个问号。ex:var s = 'aaa';(/a+?/) // ["a"]
组匹配正则表达式的括号表⽰分组匹配,括号中的模式可以⽤来匹配分组的内容。var m = 'abcabc'.match(/(.)b(.)/);m// ['abc', 'a', 'c']上⾯代码中,正则表达式/(.)b(.)/⼀共使⽤两个括号,第⼀个括号捕获a,第⼆个括号捕获c。⾮捕获组(?:x)称为⾮捕获组(Non-capturing group),表⽰不返回该组匹配的内容,即匹配的结果中不计⼊这个括号。var m = 'abc'.match(/(?:.)b(.)/);m // ["abc", "c"]上⾯代码中的模式,⼀共使⽤了两个括号。其中第⼀个括号是⾮捕获组,所以最后返回的结果中没有第⼀个括号,只有第⼆个括号匹配的内容。
先⾏断⾔x(?=y)称为先⾏断⾔(Positive look-ahead),x只有在y前⾯才匹配,y不会被计⼊返回结果。⽐如,要匹配后⾯跟着百分号的数字,可以写成/d+(?=%)/。var m = 'abc'.match(/b(?=c)/);m // ["b"]先⾏否定断⾔x(?!y)称为先⾏否定断⾔(Negative look-ahead),x只有不在y前⾯才匹配,y不会被计⼊返回结果。⽐如,要匹配后⾯跟的不是百分号的数字,就要写成/d+(?!%)/。var m = 'abd'.match(/b(?!c)/);m // ['b']参考:
2023年6月21日发(作者:)
正则表达式表单验证(姓名、性别、电话、邮箱、密码)及知识点总结正则表达式(regular expression)是⼀种表达⽂本模式(即字符串结构)的⽅法,有点像字符串的模板,常常⽤来按照“给定模式”匹配⽂本。本⼈在学习之后写了⼀个表单验证demo,话不多说,上代码
正则表达式表单验证
实例⽅法()正则实例对象的test⽅法返回⼀个布尔值,表⽰当前模式是否能匹配参数字符串/cat/.test('cats and dogs') // true
()正则实例对象的exec⽅法,⽤来返回匹配结果。如果发现匹配,就返回⼀个数组,成员是匹配成功的⼦字符串,否则返回null。exec⽅法的返回数组还包含以下两个属性:input:整个原字符串。index:整个模式匹配成功的开始位置(从0开始计数)。var r = /a(b+)a/;var arr = ('_abbba_aba_');arr // ["abbba", "bbb"] // // "_abbba_aba_"
字符串的实例⽅法(reg)匹配成功返回⼀个数组,匹配失败返回null。如果正则表达式带有g修饰符,则该⽅法与正则对象的exec⽅法⾏为不同,会⼀次性返回所有匹配成功的结果。
()字符串对象的search⽅法,返回第⼀个满⾜条件的匹配结果在整个字符串中的位置。如果没有任何匹配,则返回-1
e()字符串对象的replace⽅法可以替换匹配的值。它接受两个参数,第⼀个是正则表达式,表⽰搜索模式,第⼆个是替换的内容。
()字符串对象的split⽅法按照正则规则分割字符串,返回⼀个由分割后的各个部分组成的数组。该⽅法接受两个参数,第⼀个参数是正则表达式,表⽰分隔规则,第⼆个参数是返回数组的最⼤成员数。
字符点字符点字符(.)匹配除回车(r)、换⾏(n) 、⾏分隔符(u2028)和段分隔符(u2029)以外的所有字符。
位置字符^ 表⽰字符串的开始位置$ 表⽰字符串的结束位置
选择符竖线符号(|)在正则表达式中表⽰“或关系”(OR),即cat|dog表⽰匹配cat或dog。
预定义模式某些常见模式的简写⽅式d 匹配0-9之间的任⼀数字,相当于[0-9]。D 匹配所有0-9以外的字符,相当于[^0-9]。w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]。W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]。s 匹配空格(包括换⾏符、制表符、空格符等),相等于[ trnvf]。S 匹配⾮空格的字符,相当于[^ trnvf]。b 匹配词的边界。B 匹配⾮词边界,即在词的内部。 [Ss]指代⼀切字符
重复类模式的精确匹配次数,使⽤⼤括号({})表⽰。{n}表⽰恰好重复n次{n,}表⽰⾄少重复n次{n,m}表⽰重复不少于n次,不多于m次。
量词符(写在指定字符后⾯) 问号表⽰某个模式出现0次或1次,等同于{0, 1}。* 星号表⽰某个模式出现0次或多次,等同于{0,}。+ 加号表⽰某个模式出现1次或多次,等同于{1,}。
贪婪模式三个量词符,默认情况下都是最⼤可能匹配,即匹配直到下⼀个字符不满⾜匹配规则为⽌。这被称为贪婪模式。如果想将贪婪模式改为⾮贪婪模式,可以在量词符后⾯加⼀个问号。ex:var s = 'aaa';(/a+?/) // ["a"]
组匹配正则表达式的括号表⽰分组匹配,括号中的模式可以⽤来匹配分组的内容。var m = 'abcabc'.match(/(.)b(.)/);m// ['abc', 'a', 'c']上⾯代码中,正则表达式/(.)b(.)/⼀共使⽤两个括号,第⼀个括号捕获a,第⼆个括号捕获c。⾮捕获组(?:x)称为⾮捕获组(Non-capturing group),表⽰不返回该组匹配的内容,即匹配的结果中不计⼊这个括号。var m = 'abc'.match(/(?:.)b(.)/);m // ["abc", "c"]上⾯代码中的模式,⼀共使⽤了两个括号。其中第⼀个括号是⾮捕获组,所以最后返回的结果中没有第⼀个括号,只有第⼆个括号匹配的内容。
先⾏断⾔x(?=y)称为先⾏断⾔(Positive look-ahead),x只有在y前⾯才匹配,y不会被计⼊返回结果。⽐如,要匹配后⾯跟着百分号的数字,可以写成/d+(?=%)/。var m = 'abc'.match(/b(?=c)/);m // ["b"]先⾏否定断⾔x(?!y)称为先⾏否定断⾔(Negative look-ahead),x只有不在y前⾯才匹配,y不会被计⼊返回结果。⽐如,要匹配后⾯跟的不是百分号的数字,就要写成/d+(?!%)/。var m = 'abd'.match(/b(?!c)/);m // ['b']参考:
发布评论