博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式[转]
阅读量:5333 次
发布时间:2019-06-15

本文共 10092 字,大约阅读时间需要 33 分钟。

 

正则表达式中的特殊字符

正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。 ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" $ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" * 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa + 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa ? 匹配前面元字符0次或1次,/ba*/将匹配b,ba (x) 匹配x保存x在名为$1...$9的变量中 x|y 匹配x或y {n} 精确匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) [^xyz] 不匹配这个集合中的任何一个字符 [\b] 匹配一个退格符 \b 匹配一个单词的边界 \B 匹配一个单词的非边界 \cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M \d 匹配一个字数字符,/\d/ = /[0-9]/ \D 匹配一个非字数字符,/\D/ = /[^0-9]/ \n 匹配一个换行符 \r 匹配一个回车符 \s 匹配一个空白字符,包括\n,\r,\f,\t,\v等 \S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/ \t 匹配一个制表符 \v 匹配一个重直制表符 \w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9] \W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。
正则表达式中的特殊字符

字母数字字符

字母数字字符 自身 \ f 换页符 \ n 换行符 \ r 回车 \ t 制表符 \ v 垂直制表符 \ / 一个 / 直接量 \ \ 一个 \ 直接量 \ . 一个 . 直接量 \ * 一个 * 直接量 \ + 一个 + 直接量 \ ? 一个 ? 直接量 \ | 一个 | 直接量 \ ( 一个 ( 直接量 \ ) 一个 ) 直接量 \ [ 一个 [ 直接量 \ ] 一个 ] 直接量 \ { 一个 { 直接量 \ } 一个 } 直接量 \ XXX 由十进制数 XXX 指 定的ASCII码字符 \ Xnn 由十六进制数 nn 指定的ASCII码字符 \ cX 控制字符^X. 例如, \cI等价于 \t, \cJ等价于 \n ___________________________________________________ 如果想在正则表达式中使用特殊的标点符号,必须在它们之前加上一个 "\" .
字母数字字符

正则表灰式的字符类

正则表灰式的字符类 字符 匹配 ____________________________________________________ [...] 位于括号之内的任意字符 [^...] 不在括号之中的任意字符 . 除了换行符之外的任意字符,等价于[^\n] \w 任何单字字符, 等价于[a-zA-Z0-9] \W 任何非单字字符,等价于[^a-zA-Z0-9] \s 任何空白符,等价于[\ t \ n \ r \ f \ v] \S 任何非空白符,等价于[^\ t \ n \ r \ f \ v] \d 任何数字,等价于[0-9] \D 除了数字之外的任何字符,等价于[^0-9] [\b] 一个退格直接量(特例)
字符类

正则表达式的复制字符

正则表达式的复制字符 字符 含义 __________________________________________________________________ {n, m} 匹配前一项至少n次,但是不能超过m次 {n, } 匹配前一项n次,或者多次 {n} 匹配前一项恰好n次 ? 匹配前一项0次或1次,也就是说前一项是可选的. 等价于 {
0, 1} + 匹配前一项1次或多次,等价于{
1,} * 匹配前一项0次或多次.等价于{
0,} ___________________________________________________________________
复制字符

选择,分组和引用

选择,分组和引用 字符 含义 ____________________________________________________________________ | 选择.匹配的要么是该符号左边的子表达式,要么它右边的子表达式 (...) 分组.将几个项目分为一个单元.这个单元可由 *、+、?和|等符号使用,而且还可以记住和这个组匹配的字符以供此后引 用使用 \n 和第n个分组所匹配的字符相匹配.分组是括号中的子表达式(可能是嵌套的).分组号是从左到右计数的左括号数 ____________________________________________________________________ 例如:下面的正则表达式匹配的就是位于单引号或双引号之内的所有字符.但是,它要求开始和结束的引号匹配(例如两个都是双引号或者都是单引号): /[' "] [^ ' "]*[' "]/ 如果要求开始和结束的引号匹配,我们可以使用如下的引用: /( [' "] ) [^ ' "] * \1/
选择,分组和引用

指定匹配的位置

指定匹配的位置 _____________________________________________________________^ 匹配的是字符的开头,在多行检索中,匹配的是一行的开头 $ 匹配的是字符的结尾,在多行检索中,匹配的是一行的结尾 \b 匹配的是一个词语的边界.简而言之就是位于字符\w 和 \w之间的位置(注意:[\b]匹配的是退格符) \B 匹配的是非词语的边界的字符 _____________________________________________________________
指定匹配的位置

属性

属性 _________________________________________ i 执行大小写不敏感的匹配 g 执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了 _________________________________________
属性

符号:

/r, /n    代表回车和换行符/t    制表符 //    代表 "/" 本身/^    匹配 ^ 符号本身/$    匹配 $ 符号本身/.    匹配小数点(.)本身/d    任意一个数字,0~9 中的任意一个/w    任意一个字母或数字或下划线,也就是 A~Z,a~z,0~9,_ 中任意一个 /s    包括空格、制表符、换页符等空白字符的其中任意一个.    小数点可以匹配除了换行符(/n)以外的任意一个字符[ab5@]    匹配 "a" 或 "b" 或 "5" 或 "@"[^abc]    匹配 "a","b","c" 之外的任意一个字符[f-k]    匹配 "f"~"k" 之间的任意一个字母[^A-F0-3]    匹配 "A"~"F","0"~"3" 之外的任意一个字符{n}    表达式重复n次,比如:"/w{2}" 相当于 "/w/w";"a{5}" 相当于 "aaaaa"{m,n}    表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"{m,}    表达式至少重复m次,比如:"/w/d{2,}"可以匹配 "a12","_456","M12344"...?    匹配表达式0次或者1次,相当于 {
0,1},比如:"a[cd]?"可以匹配 "a","ac","ad" + 表达式至少出现1次,相当于 {
1,},比如:"a+b"可以匹配 "ab","aab","aaab"...* 表达式不出现或出现任意次,相当于 {
0,},比如:"/^*b"可以匹配 "b","^^^b"... ^ 与字符串开始的地方匹配,不匹配任何字符$ 与字符串结束的地方匹配,不匹配任何字符/b 匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符 | 左右两边表达式之间 "或" 关系,匹配左边或者右边( ) (1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰 (2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到(d)(/w+) "/w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd"(d)(/w+)(d) "/w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "/w+" 也能够匹配上最后一个 "d",但是为了使整个表达式匹配成功,"/w+" 可以 "让出" 它本来能够匹配的最后一个 "d"(d)(/w+?) "/w+?" 将尽可能少的匹配第一个 "d" 之后的字符,结果是:"/w+?" 只匹配了一个 "x" (d)(/w+?)(d) 为了让整个表达式匹配成功,"/w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配,从而使整个表达式匹配成功。因此,结果是:"/w+?" 匹配 "xxx"/S 匹配所有非空白字符("/s" 可匹配各个空白字符)/D 匹配所有的非数字字符/W 匹配所有的字母、数字、下划线以外的字符/B 匹配非单词边界,即左右两边都是 "/w" 范围或者左右两边都不是 "/w" 范围时的字符缝隙 ^ 匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "/^"$ 匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "/$"( ) 标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "/(" 和 "/)"[ ] 用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "/[" 和 "/]"{ } 修饰匹配次数的符号。要匹配大括号,请使用 "/{
" 和 "/}". 匹配除了换行符(/n)以外的任意一个字符。要匹配小数点本身,请使用 "/."? 修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "/?"+ 修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "/+"* 修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "/*"| 左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "/|"
View Code

 

 

17种正则

"^\\d+$"  //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$"  //正整数 "^((-\\d+)|(0+))$"  //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$"  //负整数 "^-?\\d+$"    //整数 "^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0) "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0) "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数"^(-?\\d+)(\\.\\d+)?$"  //浮点数 "^[A-Za-z]+$"  //由26个英文字母组成的字符串 "^[A-Z]+$"  //由26个英文字母的大写组成的字符串 "^[a-z]+$"  //由26个英文字母的小写组成的字符串 "^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串 "^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串 "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址 "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url
View Code

例子

/^(100|[1-9]\d|\d)$/    0-100整数

var reg = /^(?!0)([0-9]{1,3})*(.[0-9]{1})?$/;  1-1000 只能带一位小数

var a = reg.exec($(this).val());

var b = reg.test($(this).val());

只能输入1个数字  表达式  ^\d$  描述  匹配一个数字  匹配的例子  0,1,2,3  不匹配的例子    只能输入n个数字   表达式  ^\d{n}$ 例如^\d{
8}$ 描述 匹配8个数字 匹配的例子 12345678,22223334,12344321 不匹配的例子 只能输入至少n个数字 表达式 ^\d{n,}$ 例如^\d{
8,}$ 描述 匹配最少n个数字 匹配的例子 12345678,123456789,12344321 不匹配的例子 只能输入m到n个数字 表达式 ^\d{m,n}$ 例如^\d{
7,8}$ 描述 匹配m到n个数字 匹配的例子 12345678,1234567 不匹配的例子 123456,123456789 只能输入数字 表达式 ^[0-9]*$ 描述 匹配任意个数字 匹配的例子 12345678,1234567 不匹配的例子 E, 只能输入某个区间数字 表达式 ^[12-15]$ 描述 匹配某个区间的数字 匹配的例子 12,13,14,15 不匹配的例子 只能输入0和非0打头的数字 表达式 ^(0|[1-9][0-9]*)$ 描述 可以为0,第一个数字不能为0,数字中可以有0 匹配的例子 12,10,101,100 不匹配的例子 01, 只能输入实数 表达式 ^[-+]?\d+(\.\d+)?$ 描述 匹配实数 匹配的例子 18,+3.14,-9.90 不匹配的例子 .6,33s,67-99 只能输入n位小数的正实数 表达式 ^[0-9]+(.[0-9]{n})?$以^[0-9]+(.[0-9]{
2})?$为例 描述 匹配n位小数的正实数 匹配的例子 2.22 不匹配的例子 2.222,-2.22, 只能输入m-n位小数的正实数 表达式 ^[0-9]+(.[0-9]{m,n})?$以^[0-9]+(.[0-9]{
1,2})?$为例 描述 匹配m到n位小数的正实数 匹配的例子 2.22,2.2 不匹配的例子 2.222,-2.2222, 只能输入非0的正整数 表达式 ^\+?[1-9][0-9]*$ 描述 匹配非0的正整数 匹配的例子 2,23,234 不匹配的例子 0,-4, 只能输入非0的负整数 表达式 ^\-[1-9][0-9]*$ 描述 匹配非0的负整数 匹配的例子 -2,-23,-234 不匹配的例子 0,4, 只能输入n个字符 表达式 ^.{n}$ 以^.{
4}$为例 描述 匹配n个字符,注意汉字只算1个字符 匹配的例子 1234,12we,123清,清清月儿 不匹配的例子 0,123,123www, 只能输入英文字符 表达式 ^.[A-Za-z]+$为例 描述 匹配英文字符,大小写任意 匹配的例子 Asp,WWW, 不匹配的例子 0,123,123www, 只能输入大写英文字符 表达式 ^.[A-Z]+$为例 描述 匹配英文大写字符 匹配的例子 NET,WWW, 不匹配的例子 0,123,123www, 只能输入小写英文字符 表达式 ^.[a-z]+$为例 描述 匹配英文大写字符 匹配的例子 asp,csdn 不匹配的例子 0,NET,WWW, 只能输入英文字符+数字 表达式 ^.[A-Za-z0-9]+$为例 描述 匹配英文字符+数字 匹配的例子 1Asp,W1W1W, 不匹配的例子 0,123,123,www, 只能输入英文字符/数字/下划线 表达式 ^\w+$为例 描述 匹配英文字符或数字或下划线 匹配的例子 1Asp,WWW,12,1_w 不匹配的例子 3#,2-4,w#$, 密码举例 表达式 ^.[a-zA-Z] \w{m,n}$ 描述 匹配英文字符开头的m-n位字符且只能数字字母或下划线 匹配的例子 不匹配的例子 验证首字母大写 表达式 \b[^\Wa-z0-9_][^\WA-Z0-9_]*\b 描述 首字母只能大写 匹配的例子 Asp,Net 不匹配的例子 验证网址(带?id=中文)VS.NET2005无此功能 表达式 ^http:\/\/([\w-]+(\.[\w-]+)+(\/[\w- .\/\?%&=\u4e00-\u9fa5]*)?)?$ 描述 验证带?id=中文 匹配的例子 ,http://blog.csdn.net/?id=清清月儿 不匹配的例子 验证汉字 表达式 ^[\u4e00-\u9fa5]{
0,}$ 描述 只能汉字 匹配的例子 清清月儿 不匹配的例子 验证QQ号 表达式 [0-9]{
5,9} 描述 5-9位的QQ号 匹配的例子 10000,123456 不匹配的例子 10000w, 验证电子邮件(验证MSN号一样) 表达式 \w+([-+.´]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 描述 注意MSN用非hotmail.com邮箱也可以 匹配的例子 aaa@msn.com 不匹配的例子 111@1. 验证身份证号(粗验,最好服务器端调类库再细验证) 表达式 ^[1-9]([0-9]{
16}|[0-9]{
13})[xX0-9]$ 描述 匹配的例子 15或者18位的身份证号,支持带X的 不匹配的例子 验证手机号(包含159,不包含小灵通) 表达式 ^13[0-9]{
1}[0-9]{
8}|^15[9]{
1}[0-9]{
8} 描述 包含159的手机号130-139 匹配的例子 139XXXXXXXX 不匹配的例子 140XXXXXXXX, 验证电话号码号(很复杂,VS.NET2005给的是错的) 表达式(不完美 ) 方案一 ((\(\d{
3}\)|\d{
3}-)|(\(\d{
4}\)|\d{
4}-))?(\d{
8}|\d{
7})方案二 (^[0-9]{
3,4}\-[0-9]{
3,8}$)|(^[0-9]{
3,8}$)|(^\([0-9]{
3,4}\)[0-9]{
3,8}$)|(^0{
0,1}13[0-9]{
9}$) 支持手机号但也不完美 描述 上海:02112345678 3+8位上海:021-12345678上海:(021)-12345678上海:(021)12345678郑州:03711234567 4+7位杭州:057112345678 4+8位还有带上分机号,国家码的情况由于情况非常复杂所以不建议前台做100%验证,到目前为止似乎也没有谁能写一个包含所有的类型 ,其实有很多情况本身就是矛盾的。如果谁有更好 的验证电话的请留言 匹配的例子 不匹配的例子 验证护照 表达式 (P\d{
7})|G\d{
8}) 描述 验证P+7个数字和G+8个数字 匹配的例子 不匹配的例子 验证IP 表达式 ^(25[0-5]|2[0-4][0-9]|[0-1]{
1}[0-9]{
2}|[1-9]{
1}[0-9]{
1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{
1}[0-9]{
2}|[1-9]{
1}[0-9]{
1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{
1}[0-9]{
2}|[1-9]{
1}[0-9]{
1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{
1}[0-9]{
2}|[1-9]{
1}[0-9]{
1}|[0-9])$ 描述 验证IP 匹配的例子 192.168.0.1 222.234.1.4 不匹配的例子 验证域 表达式 ^[a-zA-Z0-9]+([a-zA-Z0-9\-\.]+)?\.(com|org|net|cn|com.cn|edu.cn|grv.cn|)$ 描述 验证域 匹配的例子 csdn.net baidu.com it.com.cn 不匹配的例子 192.168.0.1 验证信用卡 表达式 ^((?:4\d{
3})|(?:5[1-5]\d{
2})|(?:6011)|(?:3[68]\d{
2})|(?:30[012345]\d))[ -]?(\d{
4})[ -]?(\d{
4})[ -]?(\d{
4}|3[4,7]\d{
13})$ 描述 验证VISA卡,万事达卡,Discover卡,美国运通卡 匹配的例子 不匹配的例子 验证ISBN 国际标准书号 表达式 ^(\d[- ]*){
9}[\dxX]$ 描述 验证ISBN国际标准书号 匹配的例子 7-111-19947-2 不匹配的例子 验证GUID 全球唯一标识符 表达式 ^[A-Z0-9]{
8}-[A-Z0-9]{
4}-[A-Z0-9]{
4}-[A-Z0-9]{
4}-[A-Z0-9]{
12}$ 描述 格式8-4-4-4-12 匹配的例子 2064d355-c0b9-41d8-9ef7-9d8b26524751 不匹配的例子 验证文件路径和扩展名 表达式 ^([a-zA-Z]\:|\\)\\([^\\]+\\)*[^\/:*?"<>|]+\.txt(l)?$ 描述 检查路径和文件扩展名 匹配的例子 E:\mo.txt 不匹配的例子 E:\ , mo.doc, E:\mo.doc , 验证Html颜色值 表达式 ^#?([a-f]|[A-F]|[0-9]){
3}(([a-f]|[A-F]|[0-9]){
3})?$ 描述 检查颜色取值 匹配的例子 #FF0000 不匹配的例子
例子

 

转载于:https://www.cnblogs.com/love201314/p/5556152.html

你可能感兴趣的文章
【BZOJ 3669】 [Noi2014]魔法森林 LCT维护动态最小生成树
查看>>
[搬运] 写给 C# 开发人员的函数式编程
查看>>
vsftpd虚拟用户【公司系统部分享】
查看>>
Python之旅Day14 JQuery部分
查看>>
core--线程池
查看>>
redux-effect
查看>>
Swift和OC混编
查看>>
Android轻量级的开源缓存框架ASimpleCache
查看>>
他山之石:加载图片的一个小问题
查看>>
shell - 常识
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
codeforces 1041A Heist
查看>>
字典常用方法
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
python的猴子补丁monkey patch
查看>>
架构模式: API网关
查看>>
正则验证积累
查看>>
Linux学习-汇总
查看>>