宝哥软件园

详细讲解正则表达式基本语法和表单验证操作[基于JS]

编辑:宝哥软件园 来源:互联网 时间:2021-09-05

本文通过实例描述了正则表达式的基本语法和形式验证操作。分享给大家参考,如下:

正则表达式是一个强大的工具,可以用于模式匹配和替换,也是数据的验证。

第一,基本语法

“/”分隔符之间的部分是目标对象中要匹配的模式。用户只需要将匹配对象的模式内容放在“/”分隔符之间。为了使用户能够更灵活地定制模式内容,正则表达式提供了特殊的“元字符”。元字符是指正则表达式中具有特殊含义的特殊字符,可以用来指定目标对象中前导字符(即元字符前面的字符)的出现方式。

1.常用的元字符包括:“”、“*”和“?”。

“”元字符指定其前导字符必须在目标对象中连续出现一次或多次。“*”元字符规定其前导字符必须在目标对象中连续出现零次或几次。"?"元字符规定其前导对象必须在目标对象中出现零次或一行一次。

示例:

/fo/因为正则表达式包含“*”元字符,这意味着它可以与目标对象中字母f后面连续出现一个或多个字母o的字符串如“傻瓜”、“fo”或“football”匹配,/eg*/因为正则表达式包含“*”元字符,这意味着它可以与目标对象中字母e后面连续出现零个或多个字母g的字符串如“easy”、“ego”或“egg”匹配。/Wil?/因为上面的正则表达式包含“?”元字符,这意味着它可以与目标对象中的“Win”或“Wilson”匹配,以及在字母I之后连续出现零个或一个字母l的其他字符串.

2.有时候不知道要匹配多少个字符。为了适应这种不确定性,正则表达式支持限定词的概念。这些限定符可以指定正则表达式的给定组件必须出现多少次才能满足匹配。

{n} n是非负整数。匹配确定的n次。示例“o{2}”不能匹配“鲍勃”中的“o”,但可以匹配“食物”中的两个“o”。{n,} n是非负整数。至少匹配n次。示例“o{2,}”不能匹配“鲍勃”中的“o”,但可以匹配“fooood”中的所有“o”。“O{1,}”相当于“o”。“O{0,}”相当于“o*”。{n,m} m和n为非负整数,其中n=m,至少匹配n次,最多匹配m次。示例“o{1,3}”将匹配“foooood”中的前三个o。O{0,1}相当于o?'

请注意,逗号和两个数字之间不能有空格。

3.如何使用几个重要的元字符:

s:用于匹配单个空格字符,包括tab键和换行符;S:用于匹配除单个空格字符以外的所有字符;d:用于匹配0到9之间的数字;w:用于匹配字母;数字或下划线字符;W:用于匹配所有不匹配的字符 W;用于匹配除换行符以外的所有字符。

(注:我们可以把s和S和w和W看作是倒数运算)

/ s/上述正则表达式可用于匹配目标对象中的一个或多个空格字符。/d000/如果我们手里有一张复杂的财务报表,通过上面的正则表达式,我们可以很容易地找到所有总金额为1000元的钱。

4.除了我们上面介绍的元字符,正则表达式中还有另一个独特的特殊字符,那就是定位器。定位器用于指定匹配模式在目标对象中出现的位置。常用的定位器包括“、“$”、“B”和“ b”。

定位器“$”指定匹配模式必须出现在目标字符串的开头。定位器“b”指定匹配模式必须出现在目标字符串开头或结尾的两个边界之一。同样,我们也可以把“”和“$”以及“b”和“B”看作是两组相互逆运算的定位器。例如:/hell/因为上面的正则表达式包含了“”定位器,所以可以与目标对象中以“hell”、“hello”或“hellhound”开头的字符串进行匹配。/ar$/因为上面的正则表达式包含“$”定位器,所以它可以匹配目标对象中以“car”、“bar”或“ar”结尾的字符串。/bbom/因为上面的正则表达式模式以“b”定位器开头,所以它可以与目标对象中以“bomb”或“bom”开头的字符串匹配。/manb/由于上面的正则表达式模式以“b”定位器结尾,因此可以与目标对象中以“human”、“woman”或“man”结尾的字符串进行匹配。

描述:

为了方便用户更灵活地设置匹配模式,正则表达式允许用户在匹配模式中指定一定的范围,不限于特定的字符。例如:/[a-z]/上面的正则表达式将匹配从A到Z范围内的任何大写字母。/[A-Z]/上面的正则表达式将匹配从A到Z范围内的任何小写字母。/[0-9]/上面的正则表达式将匹配从0到9的任何数字。/([A-Z][A-Z][0-9])/以上正则表达式将匹配任何由字母和数字组成的字符串,如“aB0”。

这里需要提醒用户的一点是,您可以使用“()”在正则表达式中组合字符串。“()”符号中包含的内容必须同时出现在目标对象中。

如果我们想在类似于编程逻辑的正则表达式中实现OR操作,并从几种不同的模式中选择一种进行匹配,我们可以使用管道字符“|”。

正则表达式中还有一个常用的运算符,就是负号“[]”。与前面介绍的定位器“”不同,负号“[]”规定模式中指定的字符串不能存在于目标对象中。

例如:/[a-c]/上面的字符串将匹配目标对象中除a、b和c之外的任何字符。一般来说,“”出现在“[]”时,被认为是否定运算符。

当“”在“[]”之外或没有“[]”时,应将其视为定位器。

最后,当用户需要向正则表达式的模式中添加元字符并找到它们的匹配对象时,他们可以使用转义字符“”。例如:/Th*/上面的正则表达式将与目标对象中的“Th*”而不是“The”匹配。

第二,用例子

JavaScript 1.2中有一个功能强大的RegExp()对象,可以用来匹配正则表达式。test()方法可以检查目标对象是否

包含匹配的模式,并相应地返回true或false。

语法:re=newregexp ('pattern ',['flags'])

需要Re——。要分配给正则表达式模式的变量名。需要模式——。要使用的正则表达式模式。标志——可选。用引号将标志括起来。标志可以组合使用,包括G(全文搜索中出现的所有模式)I(忽略大小写)M(多行搜索)

共同的规律:

已验证的数字:[0-9] * $已验证的N个数字: d {n} $已验证的至少N个数字: d {n,} $已验证的m-n个数字: d {m,n} $已验证的零和非零数字:(0 | [1-9]) $验证有1-3个小数位的正实数:[0-9](。[0-9] {1,3})?$验证非零正整数:?[1-9][0-9]*$验证非零负整数:-[1-9] [0-9] * $验证非负整数(正整数0) d $验证非正整数(负整数0) (- D )|(0 ))$验证长度为3的字符:{3} $验证由26个英文字母组成的字符串:[a-za-z] $验证由26个大写英文字母组成的字符串:[a-z] $验证由26个小写英文字母组成的字符串:[a-z] $验证由数字、26个英文字母或下划线组成的字符串: w $验证用户密码: [a-za-z] w {5,17} $正确的格式是:以字母开头,长度在6到18之间,并且只能包含字符、数字和下划线。请验证它是否包含“%”;=?字符,如$ ': [% ',=?$x22]验证用汉字:[ u4e00- u9fa5],{0,} $验证用电子邮件地址: w [-。] w)* @ w([-]。] w) * 。 w ([-。] %=]*)?$ ;^[a-zA-z] ://(w (-w )*)(。(w (-w )*))*(?S*)?$身份验证电话号码:( ( d {3,4} ) | d {3,4}-)? d {7,8 } $:-正确的格式是XXXX-XXXXXXXX,xxxx-XXXXXXXX,XXX-xxxx,XXX-XXXXXXXX,XXXXXXXX,XXXXXXXX。身份验证ID号(15位或18位): d { 15 } | d { 18 }一年的12个月$身份验证:(0?[1-9]|1[0-2])$正确的格式是:“01”-“09”和“1”-“12”。验证一个月的31天:((0?[1-9])|((1|2)[0-9])|30|31)$正确的格式是01,09和1,31。整数:-?d $非负浮点数(正浮点数0): d (。 d)?$正浮点数(([0-9] )。[0-9] * [1-9] [0-9] *) | ([0-9] * [1-9] [0-9] * .[0-9]) | ([0-9] )|(0 (.0 )?))$负浮点数(-((([0-9])。[0-9] * [1-9] [0-9] *) | ([0-9] * [0-9]) |.d )(。d)?非单字节[ x00-xff]

1.返回包含man的字符串的长度

函数getlength(str){返回str.replace(/[^x00-xff]/g,'xx').长度;}2.用户名为6-25个字符,不能包含非法字符

oname . on bulr=function(){ var re=/[^wu4e00-u9fa5]/g;If (re。测试(这个。value)) {name _ msg。innerhtml='包含非法字符!';} else if(这个。value) {name _ msg.innerhtml='用户名不能为空!';} else if(name _ length 25){ name _ msg . innerhtml='长度超过25个字符!';} else if(name _ length 6){ name _ msg . innerhtml='长度小于6个字符!';} else { OK}}3.用户设置的密码不能为空,包含相同的字符、所有数字和所有字母

pwd . on bulr=function(){ if(this。value=='') {pwd _ msg.innerhtml='不能为空!}}PS:这里有两个非常方便的正则表达式工具,供大家参考:

JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript

在线正则表达式生成工具:http://tools.jb51.net/regex/create_reg

更多对JavaScript相关内容感兴趣的读者可以查看本网站的主题:《JavaScript正则表达式技巧大全》、《JavaScript替换操作技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript中json操作技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数学运算用法总结》、0103010。

希望本文对JavaScript编程有所帮助。

更多资讯
游戏推荐
更多+