在工作中经常会使用到正则表达式,总是在需要的时候才记起来翻资料查文档,脑海里没有一个系统的知识体系,今天借此机会总结下,希望能与大家共同进步。

正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式 ,因为这里 *与正则式的 *的含义是不同的。正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

那么我们在什么时候使用正则表达式呢?正则表达式是查找和替换字符串模式的简洁和灵活的表示法 ,比如在网页上常常会出现需要填写表单的情况 ,数据比如 电话、生日、

E -mail等这些具有特定格式的字符串 ,可是有时用户会胡乱填写无效的内容;再如需在 blog、论坛中对用户发表的文章进行文字过滤 ,这时就需要使用到正则表达式。

正则表达式一般由2部分组成,包括元字符和限定符。
较为常用的元字符包括:“+”,“*”以及“?”

“+” 规定其前导字符必须在目标对象中连续出现一次或多次

“*” 规定其前导字符必须在目标对象中出现零次或连续多次

“?”规定其前导字符必须在目标对象中出现零次或者一次

“^” 表示字符串的开始位置或多行匹配模式下每行的开始位置

“$” 表示字符串的开始位置或多行匹配模式下每行的结束位置

以几个典型的正则表达式为例说明其含义

(1)/Eo+/,表达式中包含“+”元字符,表示可以与目标对象中的“Eo”,
“Eool”,等在字母E后面连续出现一个或多个字母“O”的字符串相匹配

(2)/we*/,表达式中包含“*”元字符,表示可以与目标对象中的“we”,
“wee”,或者“well”等在字母w后面连续出现零个或多个字母e的字符串相匹配

(3)/tel?/,表达式中包含“?”字符,表示可以与目标对象中的“tell”,或者“tech”等

在字母e后面联系出现零个或一个字母l的字符串相匹配。

其他主要元字符的使用方式如下:

s:用于匹配单个空格符,包括tab键和换行符;

S:用于匹配除单个空格符之外的所有字符;

d:用于匹配从0到 9的数字;

w:用于匹配字母,数字或下划线字符;

W:用于匹配所有与 w不匹配的字符;

.:用于匹配除换行符之外的所有字符.

在正则表达式中,可以用方括号括起若干个字符来表示一个元字符。除元字符外,正则表达式支持限定符的概念。这些限定字符可以指定正则表达式的一个给定组件必须要出现多少慈才能满足匹配,因而可以适应不知道哟啊匹配多少字符时的不确定情况。限定符有三种使用说明如下:

(1){n} n是一个非负整数,匹配确定的n次.例如“O{2 ,}”不能匹配‘BOb’中 但能匹配
“good“中的所有“o”.

(2){n,} n是一个非负整数,至少匹配n次,例如“o{2,}”不能匹配“Non”中的“o”,但是能匹配“goooood”中所有的“o”.

(3){n,m} m和n均为非负整数,其中n<=m,最少匹配n次且最多匹配m次,例如o{1,3}能匹配”goooood”中的前三个“o”,这里要注意逗号和两个数之间不能有空格。

正则表达式语法简洁、功能强大,特别在对数据的验证问题上,我们可以通过创建一个正则表达式规则,尝试定制匹配搜索字符串中相应的特定模式,然后再根据此字符串的任何部分是否与该模式匹配来确定某个表达式是否有效,从而实现对不同数据的合法性校验。

Tags:正则表达式