脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-JavaScript-基础入门.0011.JavaScript正则类型,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。
JavaScript-基础入门.0011.JavaScript正则类型,RegExp属于引用类型,引用类型是一种数据结构,用于将数据和功能组织在一起,如VAR newRegExp = new RegExp(),这行代码创建了RegExp引用类型的一个新实例,保存在newRegExp中,使用的构造函数是RegExp,它只为新对象定义了默认的属性和方法.
创建正则:
模式修饰 | 修饰说明 |
i | 忽略大小写 |
g | 全局匹配 |
m | 多行匹配 |
1 2 3 4 5 6 7 8 | /* *创建正则对象 */ //-第一种方式:使用new关键字创建,支持修饰模式指定 varregExp=newRegExp('pattern') varregExp=newRegExp('pattern','igm') //-第二种方式:使用//符号创建,支持修饰模式指定 varregExp=/pattern/igm |
正则测试:
说明: RegExp对象测试常用.test()和.exec(),两者都是用正则表达式去匹配字符串,但前者如果匹配到则返回true,否则返回false,后者如果匹配返回匹配字符串的相关信息数组,否则返回null
1 2 3 4 5 6 7 8 9 10 11 | varstrs='ILoveYou' //测试-使用new运算符的test方法 varpattern=newRegExp('love','i') if(pattern.test(strs))console.LOG('匹配') //测试-使用字面量方式test方法 varpattern=/love/i if(pattern.test(strs))console.log('匹配') //测试-一条语句实现正则表达式匹配 if(/love/i.test(strs))console.log('匹配') //测试-使用exec测试返回匹配信息数组 if(/love/i.test(strs))console.log(/love/i.exec(strs)) |
获取控制:
说明: 正则表达式元字符是包含特殊意义的字符,它们有一些特殊功能,可以控制匹配模式的方式,反斜杠后的元字符将失去其特殊含义
匹配情况 | |
字符类:单个字符和数字 | |
. | 匹配除换行符外的任意字符 |
[a-z0-9] | 匹配括号中的字符集中的任意字符 |
[^a-z0-9] | 匹配任意不在括号中的字符集中的字符 |
/d | 匹配数字 |
/D | 匹配非数字,同[^0-9]相同 |
/w | 匹配字母和数字及_ |
/W | 匹配非字母和数字及_ |
字符类:空白字符 | |
/0 | 匹配 null 字符 |
/b | 匹配空格字符 |
/f | 匹配进纸字符 |
/n | 匹配换行符 |
/r | 匹配回车字符 |
/t | 匹配制表符 |
/s | 匹配空白字,空格,制表符和换行符 |
/S | 匹配非空白字符 |
字符类:锚字符 | |
^ | 行首匹配 |
$ | 行尾匹配 |
/A | 只有匹配字符串开始处 |
/b | 匹配单词边界,词在[]内时无效 |
/B | 匹配非单词边界 |
/G | 匹配当前搜索的开始位置 |
/Z | 匹配字符串结束处或行尾 |
/z | 只匹配字符串结束处 |
字符类:重复字符 | |
x? | 匹配 0 个或 1 个 x |
x* | 匹配 0 个或任意多个 x |
x+ | 匹配至少一个 x |
(xyz)+ | 匹配至少一个(xyz) |
x{m,n} | 匹配最少 m 个、最多 n 个 x |
字符类:替代字符 | |
this|where|logo | 匹配 this 或 where 或 logo 中任意一个 |
字符类:记录字符 | |
(string) | 用于反向引用的分组 |
/1 或$1 | 匹配第一个分组中的内容 |
/2 或$2 | 匹配第二个分组中的内容 |
/3 或$3 | 匹配第三个分组中的内容 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | /* *使用点元字符 */ varpattern=/g..gle/ varstr='GOOGLE' console.log(pattern.exec(str)) /* *使用重复匹配 */ varpattern=/g.*gle/ varstr='google' console.log(pattern.exec(str)) /* *使用字符类匹配 */ varpattern=/g[a-zA-Z_]*gle/ varstr='google' console.log(pattern.exec(str)) varpattern=/g[^0-9]*gle/ varstr='google' console.log(pattern.exec(str)) varpattern=/[a-z][A-Z]+le/ varstr='gOOGle' console.log(pattern.exec(str)) /* *使用元符号匹配 */ varpattern=/g/w*gle/d*/ varstr='google35' console.log(pattern.exec(str)) varpattern=//D{6,}/ varstr='google35' console.log(pattern.exec(str)) /* *使用锚元字符匹配 */ varpattern=/^google$/ varstr='google' console.log(pattern.exec(str)) varpattern=/^goo/sgle$/ varstr='google' console.log(pattern.exec(str)) varpattern=//bgoogle/b/ varstr='usegooglehappy' console.log(pattern.exec(str)) /* *使用或模式匹配 */ varpattern=/baidu|google|soso/ varstr='google' console.log(pattern.exec(str)) /* *使用分组模式匹配 */ varpattern=/(google){3,}/ varstr='googlegooglegooglegoogle' console.log(pattern.exec(str)) varpattern=/8(.*)8/ varstr='8google8' console.log(pattern.exec(str)) varpattern=/8(.*)8/ varstr='8google8' console.log(str.replace(pattern,'$1@H_777_301@')) varpattern=/(.*)/s(.*)/ varstr='baidugoogle' console.log(str.replace(pattern,'$2$1')) |
贪婪模式 | 惰性模式 |
+ | +? |
? | ?? |
* | *? |
{n} | {n}? |
{n,} | {n,}? |
{n,m} | {n,m}? |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | /* *关于贪婪和惰性 */ varpattern=/[a-z]+?/ varstr='abcdefjhijklmnopqrstuvwxyz' console.log(str.replace(pattern,1)) varpattern=/8(.+?)8/g varstr='Thisis8google8,Thatis8google8,Thereis8google8' console.log(pattern.exec(str)) varpattern=/8[^8]*8/g varstr='Thisis8google8,Thatis8google8,Thereis8google8' console.log(pattern.exec(str)) /* *捕捉性分组和非捕捉性分组 */ varpattern=/(/d+)([a-z]+)/ varstr='123abc' console.log(pattern.exec(str)) varpattern=/(/d+)(?:[a-z]+)/ varstr='123abc' console.log(pattern.exec(str)) /* *使用分组嵌套 */ varpattern=/(A?(B?(C?)))/ varstr='ABC' console.log(pattern.exec(str)) /* *使用前瞻捕捉 */ varpattern=/(goo(?=gle))/ varstr='google' console.log(pattern.exec(str)) /* *使用换行模式 */ varpattern=/^/d(/./w+)$/mg varstr='1.baidu/n/n/n2.google/n/n/n3.soso' console.log(str.replace(pattern,'#$1')) |
其它相关:
说明: String字符串对象也提供了4个使用正则表达式的方法
对象方法 | 方法说明 |
.match(pattern) | 返回pattern中的子串或null |
.replace(pattern, replacement) | 用replacement替换pattern |
.seArch(pattern) | 返回字符串中pattern开始位置 |
.splIT(pattern) | 返回字符串按照指定pattern拆分的数组 |
1 2 3 4 5 6 7 8 9 | //字符串对象匹配方法-match,获取匹配数组 varstrs='ILoveYou,iloveyou' console.log(strs.match(/love/ig)) //字符串对象匹配方法-search,找到就返回位置,所以g修饰符无用,未找到返回-1 console.log(strs.search(/love/ig)) //字符串对象匹配方法-replace,替换匹配的数据 console.log(strs.replace(/love/ig,'爱')) //字符串对象匹配方法-split,用匹配的数据分割字符串为数组 console.log(strs.split(/love/ig)) |
常用正则:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | //检查邮政编码 varpattern=/[1-9][0-9]{5}/ varstr='442700' console.log(pattern.test(str)) //检查文件压缩包 varpattern=//w+/.(zip|rar|gz)/ varstr='XMdevops-agent.zip' console.log(pattern.test(str)) //删除多余的空格 varpattern=//s/g varstr='xxooxx' console.log(str.replace(pattern,'')) //删除首尾空格 varpattern=/^/s+/ varstr='xxooxx' console.log(str.replace(pattern,'')) varpattern=//s+$/ varstr='xxooxx' console.log(str.replace(pattern,'')) varpattern=/^/s+(.+?)/s+/ varstr='xxooxxoo' console.log(str.replace(pattern,'$1')) //电子邮件验证 varpattern=/^([a-zA-Z0-9_/./-]+)@([a-zA-Z0-9_/./-]+)/.([a-zA-Z]{2,4})$/; varstr='yc60.COM@gmail.com'; alert(pattern.test(str)); varpattern=/^([/w/./-]+)@([/w/./-]+)/.([/w]{2,4})$/; varstr='yc60.com@gmail.com'; alert(pattern.test(str)); |
觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! @L_304_2@,巧夺天工,精雕玉琢。小宝典献丑了!
以上是脚本宝典为你收集整理的javascript代码实例教程-JavaScript-基础入门.0011.JavaScript正则类型全部内容,希望文章能够帮你解决javascript代码实例教程-JavaScript-基础入门.0011.JavaScript正则类型所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。