正则表达式(RegExp)
正则表达式(Regular Expression,简称RegExp)可以简单地认为就是用来匹配特定文本的一组表达式,也可以认为成是一组规则。比如说,可以用正则表达式来验证所输入的数字是否符合手机号码的要求(假设满足以1为开头的11位数字为手机号码的话,其对应的正则表达式即“^1\d{10}$”),也可以用来验证所输入的文本是否为邮箱地址(假设满足“xxx@xxx.com”格式的文本为邮箱地址的话,其对应的正则表达式即“ ^(\w)+@(\d|[a-zA-Z])+\.com$ ”)。总之,正则表达式的作用很强大。
元字符(Metacharacter)
元字符(Metacharacter),即代表单个含有特殊含义的字符。
元字符(Metacharacter) | 描述 |
---|---|
. | 代表一个除了换行符之外的任何一个字符 注:这里的换行符包括\n、\r |
\w | 代表一个单词字符(word character) 注:word character 指的是任何的大小写字母、任何的数字以及下划线(_),即等价于“[a-zA-Z0-9_]” |
\W | 代表除了\w之外的任何一个字符 |
\d | 代表任何一个数字(0~9),等价与[0-9] |
\D | 代表除了\d之外的任何一个字符 |
\s | 代表一个空白字符 注:不单单指的是“ ”,还包括\n、\f、\t与\v |
\S | 代表除了\s之外的任何一个字符 |
\b | 代表单词的边界位置(即单词的开头位置或者末尾位置) 注:例如 1、“\bap”可以匹配到 apple ,但是无法匹配到 map ,因为此时的 \b 代表的是 ap 必须出现在单词的开头 2、“ap\b”可以匹配到 map,但是无法匹配到 apple,因为此时的\ b 代表的是 ap 必须出现在单词的末尾 |
\B | \b与\B相反,代表单词的非边界位置(即不在单词的开头或者末尾位置) 注:例如 1、“\Bap”无法匹配到 apple ,但是可以匹配到 map ,因为此时的 \B 代表的是 ap 不能出现在单词的开头 2、“ap\B”无法匹配到 map,但是可以匹配到 apple,因为此时的 \B 代表的是 ap 不能出现在单词的末尾 |
\0 | 代表 NUL 字符 注:NUL字符在字符串中也是以“\0”的形式存在 |
\n | 代表一个换行符(new line character) |
\f | 代表一个换页符(form feed character) |
\r | 代表一个回车符(carriage return character) |
\t | 代表一个制表符(tab character) |
\v | 代表一个垂直制表符(vertical tab character) |
\xxx | 以八进制的形式表示一个字符 |
\xdd | 以十六进制的形式表示一个字符 |
\udddd | 以十六进制的形式表示一个Unicode字符 |
限定符(Quantifier)
限定符(Quantifier) | 描述 |
---|---|
n* | n可以出现任意次数,可以是0次(也就是说n也可以不出现)或者出现多次 |
n+ | n至少出现一次 |
n? | n只可以出现1次或者0次 |
n{X} | n需要出现X次,且只能出现X次 |
n{X,Y} | n需要出现X到Y次 |
n{X,} | n至少要出现X次 |
^n | n处在所要判断的字符串的开头 |
n$ | n处在所要判断的字符串的末尾 |
?=n | 匹配后面跟着是n的字符串 1、语法为 regexp(?=n),括号不能少,否则会提醒说正则表达式语法错误 2、正则表达式“I am(?= nice)”将会匹配到字符串“I am nice”中“ nice”前面的“I am” |
?!n | 与?=n相反,即匹配后面没有跟着n的字符串 1、语法为 regexp(?!n),括号不能少,否则会提醒说正则表达式语法错误 2、正则表达式“I am(?! nice)”在匹配字符串“I am nice”时没有结果,因为字符串中的“I am”后面跟着是“ nice” |
范围
范围 | 描述 |
---|---|
[abc] | 匹配方括号中的任何一个字符,[abc]即可以匹配a、b或c |
[^abc] | 不匹配方括号中的任何一个字符,[^abc]即匹配任何除了a、b或c的字符 |
[0-9] | "-"表示字符的范围 注: 1、[0-9]匹配数字1~9中的任何一个数字 2、[a-z]匹配a~z中的任何一个小写英文字母 3、[A-Z]匹配A~Z中的任何一个大写英文字母 4、[A-z]匹配任何一个大小写字母,但是[z-A]是错误的写法 5、[a-zA-Z]/[A-Za-z]匹配任何一个大小写字母 |
[^0-9] | 表示不匹配范围中的任何一个字符 注: 1、[^0-9]不匹配数字1~9中的任何一个数字 2、[^a-z]不匹配a~z中的任何一个小写英文字母 3、[^A-Z]不匹配A~Z中的任何一个大写英文字母 4、[^A-z]不匹配任何一个大小写字母 5、[^a-zA-Z]/[A-Za-z]不匹配任何一个大小写字母 |
(x|y) | 匹配x或y 注:“|”表示的意思是“或”,即选择两项中的其中一项 |
最后,希望这篇文章能带给你点启发,Have Fun!