学习目标:
正则表达式-教程
- 一周掌握 正则表达式用法
计划学习内容:
- 正则表达式-基本概念
- 正则表达式-语法
- 正则表达式-修饰符
- 正则表达式-元字符
- 正则表达式-运算符优先级
- 正则表达式-匹配规则
- 正则表达式-实例
今日学习内容:
基本概念
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
正则表达式是繁琐的,但它是强大的,学会之后的应用会让你除了提高效率外,会给你带来绝对的成就感。只要认真阅读本教程,加上应用的时候进行一定的参考,掌握正则表达式不是问题。
许多程序设计语言都支持利用正则表达式进行字符串操作。
For example
从字符串 str 中提取数字部分的内容(匹配match一次):
var str = "abc123def";
var patt1 = /[0-9]+/;
document.write(str.match(patt1));
以下标记的文本是获得的匹配的表达式:
123
除非您之前使用过正则表达式,否则你肯定不知道刚刚的例子为什么找到123,但是,毫无疑问,您已经使用过不涉及脚本的某些正则表达式概念。例如,您很可能使用 ? 和 * 通配符来查找硬盘上的文件。? 通配符匹配文件名中的 0 个或 1 个字符,而 * 通配符匹配零个或多个字符。像 data(\w)?\.dat 这样的模式将查找下列文件:
data.dat
data1.dat
data2.dat
datax.dat
dataN.dat
使用 * 字符代替 ? 字符扩大了找到的文件的数量。data.*\.dat 匹配下列所有文件:
data.dat
data1.dat
data2.dat
data12.dat
datax.dat
dataXYZ.dat
尽管这种搜索方法很有用,但它还是有限的。通过理解 * 通配符的工作原理,引入了正则表达式所依赖的概念,但正则表达式功能更强大,而且更加灵活。
正则表达式的使用,可以通过简单的办法来实现强大的功能。下面先给出一个简单的示例:
^为匹配输入字符串的开始位置。
[0-9]+用于匹配多个数字,[0-9]只是匹配单个数字,+匹配一个或多个数字。
abc$$ 匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。
我们在写用户注册表单时,只允许用户名包含字符、数字、下划线和连接字符 -,并设置用户名的长度,我们就可以使用以下正则表达式来设定。
那么看到这还不太懂,为什么使用正则表达式呢?
难道只是为了匹配几个数字吗? 当然不不是
典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。
通过使用正则表达式,可以:
- 测试字符串内的模式。
例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 - 替换文本。
可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。 - 基于模式匹配从字符串中提取子字符串。
可以查找文档内或输入域内特定的文本。
应用领域
目前,正则表达式已经在很多软件中得到广泛的应用,包括 *nix(Linux, Unix等)、HP 等操作系统,PHP、C#、Java、Python 等开发环境,以及很多的应用软件中,都可以看到正则表达式的影子。
更多详情关注链接:link.