正则表达式入门
写在前面正则真是个伟大的发明啊。分分钟提高工作效率, command + A && command + delete 现在只需在命令行下 rm -rf * 而且如果你要删除的文件有规律的话, // 删除开头为'2017-11-'的所有文件 rm -rf 2017-11-* // 删除.txt文件 rm -rf *.txt 简直是进入现代化啊。总而言之,学好正则非常必要啊。 一、几个概念正则表达式
字符串字面值 原生的字符串,没有添加正则元素在里面,看到什么就是什么。比如 元字符 在正则表达式中有特殊含义的字符,是正则表达式保留字。比如 字符组 用于匹配字符的集合,通常置于 字符组简写式 捕获分组 量词 量词用于描述某个模式出现的个数。 * 用于表示0个或多个 ?表示0个或1个 + 表示1个或多个 {n} 表示出现n个 边界 用来标记字符串中的位置,如 二、简单的模式匹配2.1 匹配字符串字面量var hw = /hello world/; hw.test('hello world');// true 2.2 匹配数字和非数字对于单个数字,我们可以用 // 匹配0-9的数字 var reg1 = /[0-9]/; // 简写形式 var reg2 = /d/; reg1.test('5'); reg2.test('5'); 举个例子,我们可以用数字匹配来验证年份。 // 匹配1000 ~ 2999 var yearReg = /^[1-2]ddd$/; yearReg.test('1970'); yearReg.test('2999'); 与 2.3 匹配单词和非单词字符
2.4 匹配空白符
var sReg = /s/; var text = 'wor ld'; // 删除空白字符 text.replace(sReg,'');//world 2.5 匹配任意字符
var reg = /^.{4}$/; reg.test('-R3s'); reg.test('hello'); 三、选择、分组和引用3.1 选择选择操作可以在多个子模式中选择一种, var reg = /<(html|HTML)>/; reg.test('<html>');//true reg.test('<HTML>');//true 3.2 捕获分组和后向引用前面提到过, // 这里1表示前面的(html|HTML) var reg = /<(html|HTML)>.*</1>/; reg.test('<html><body></body></html>');//true reg.test('<HTML><body></body></HTML>');//true 3.3 非捕获分组有时候我们的分组并不需要后面引用,这时候可以使用非捕获分组来提升性能。 // 判断广东省广州市的电话号码 var reg = /^(?:020)-d{8}$/; reg.test('020-88886666');//true // 判断151或127开头的手机号 var reg2 = /^(?:151|127)d{8}$/; reg2.test('15166668888');//true 四、匹配Unicode字符
var reg = /^u4eac[A-Z][0-9_A-Z]{5}$/; reg.test('京AF2345');//true 五、结语正则表达式是相当强大的工具,这篇文章只能算是自己入门的一个简单的总结。还有许多特性等待在实践中发掘。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |