《神奇的匹配:正则表达式求精之旅》从正则表达式的基本概念、基本语法入手,着重于数字验证、字符串验证、数字和字符串混合验证及HTML处理等各个方面的应用。并基于目前流行的程序语言和应用环境(如C#、ASP.NET、JSP、JavaScript或PHP),全面介绍了创建正则表达式的方法,以及正则表达式在Web环境中的各种应用。
《神奇的匹配:正则表达式求精之旅》适合广大Web网站开发人员、网站管理维护人员和在校学生阅读,尤其适合与字符串处理相关的Web编程技术人员阅读。
目录
- 第1篇 正则表达式基础
- 第1章 外行看正则表达式 1
- 1.1 什么是正则表达式 1
- 1.2 本书使用的测试工具 2
- 1.3 理解元字符 3
- 1.3.1 匹配位置的元字符 3
- 1.3.2 匹配字符的元字符 4
- 1.3.3 元字符总结 5
- 1.4 文字匹配 7
- 1.4.1 字符类 7
- 1.4.2 字符转义 9
- 1.4.3 反义 9
- 1.4.4 限定符 10
- 1.5 字符的操作 15
- 1.5.1 替换 15
- 1.5.2 分组 17
- 1.5.3 反向引用 17
- 1.6 正则的其他操作 19
- 1.6.1 零宽度断言 19
- 1.6.2 负向零宽度断言 20
- 1.6.3 匹配选项 21
- 1.6.4 注释 21
- 1.6.5 优先级顺序 22
- 1.6.6 递归匹配 22
- 1.7 典型正则表达式解释 23
- 1.7.1 匹配Windows操作系统的名称 23
- 1.7.2 匹配HTML标记 23
- 1.7.3 匹配HTML标记之间的内容 24
- 1.7.4 匹配CSV文件内容 25
- 第2章 数字验证的方法 27
- 2.1 9种数值验证 27
- 2.1.1 字符串只包含数字的验证 27
- 2.1.2 字符串只包含整数的验证 31
- 2.1.3 字符串指定范围的整数验证 32
- 2.1.4 字符串为实数的验证 35
- 2.1.5 字符串指定精度的实数验证 38
- 2.1.6 科学计数法的数值验证 39
- 2.1.7 二进制数值的验证 39
- 2.1.8 八进制数值的验证 40
- 2.1.9 十六进制数值的验证 41
- 2.2 4种国内电话号码的验证 43
- 2.2.1 国内手机号码验证 43
- 2.2.2 固定电话号码(不包括区号)验证 44
- 2.2.3 区号+固定电话号码验证 45
- 2.2.4 区号+固定电话号码+分机号码验证 47
- 2.2.5 固定电话号码验证总结 48
- 2.3 2种身份证号码验证 49
- 2.3.1 15位身份证号码验证 50
- 2.3.2 18位身份证号码验证 51
- 2.4 银行卡和信用卡号验证 51
- 2.5 邮政编码验证 52
- 2.5.1 国内邮政编码验证 52
- 2.5.2 国际邮政编码验证 53
- 2.6 4种IP地址验证 53
- 2.6.1 简单IP地址验证 53
- 2.6.2 精确IP地址验证 54
- 2.6.3 子网内部IP地址验证 56
- 2.6.4 64位IP地址验证 57
- 第3章 常用字符串验证方法 60
- 3.1 5种英文单词验证 60
- 3.1.1 小写英文单词验证 60
- 3.1.2 大写英文单词验证 61
- 3.1.3 英文单词的分隔符验证 62
- 3.1.4 否定验证 64
- 3.1.5 具有重复特征的英文单词验证 67
- 3.2 6种非单词字符串验证 69
- 3.2.1 英文标点符号验证 69
- 3.2.2 中文标点符号验证 70
- 3.2.3 中文文本验证 70
- 3.2.4 特殊字符验证 71
- 3.2.5 密码验证 71
- 3.2.6 字符表的分类 76
- 3.3 常用的文件名称和路径验证 76
- 3.3.1 通配符 76
- 3.3.2 指定文件扩展名的验证 77
- 3.3.3 指定文件名的验证 78
- 3.3.4 包含指定字符串的文件全名验证 78
- 3.3.5 排除两端存在空白字符的文件全名验证 79
- 3.3.6 文件路径验证 81
- 3.4 4种网络常用元素验证 82
- 3.4.1 电子邮件验证 82
- 3.4.2 主机名称验证 83
- 3.4.3 HTTP地址验证 85
- 3.4.4 FTP地址验证 86
- 第4章 常见数字和字符混合验证 87
- 4.1 5种数学表达式验证 87
- 4.1.1 操作数验证 87
- 4.1.2 操作符验证 88
- 4.1.3 简单数学表达式验证 88
- 4.1.4 只含操作数和操作符的数学表达式验证 89
- 4.1.5 包含小括号的数学表达式验证 90
- 4.2 8种日期和时间验证 92
- 4.2.1 年验证 92
- 4.2.2 月验证 93
- 4.2.3 日验证 94
- 4.2.4 年月日格式的日期验证 95
- 4.2.5 24小时制时分秒格式的时间验证 96
- 4.2.6 12小时制时分秒格式的时间验证 97
- 4.2.7 带毫秒的时间验证 98
- 4.2.8 长格式的日期和时间验证 100
- 4.3 4种编码规范验证 101
- 4.3.1 类名称验证 101
- 4.3.2 声明变量表达式验证 102
- 4.3.3 函数名称验证 102
- 4.3.4 声明函数表达式验证 103
- 4.4 3种车牌号码验证 106
- 4.4.1 通用车牌号码验证 106
- 4.4.2 武警车牌号码验证 108
- 第5章 常见的HTML元素验证和处理 110
- 5.1 6种HTML元素验证的基础 110
- 5.1.1 HTML标记验证 110
- 5.1.2 非封闭HTML标记验证 111
- 5.1.3 封闭HTML标记验证 112
- 5.1.4 属性赋值表达式验证 113
- 5.1.5 HTML中的注释验证 116
- 5.1.6 HTML中的脚本代码块验证 117
- 5.2 4种非封闭的HTML元素验证 118
- 5.2.1 <br>元素验证 119
- 5.2.2 <hr>元素验证 121
- 5.2.3 <a>元素验证 124
- 5.2.4 <input>元素验证 128
- 5.3 封闭的HTML元素验证 129
- 5.4 处理HTML元素 130
- 5.4.1 提取HTML标记 130
- 5.4.2 提取HTML标记之间的内容 131
- 5.4.3 提取URL 132
- 5.4.4 提取图像的URL 133
- 5.4.5 提取HTML页面的标题 134
- 第2篇 ASP.NET正则表达式应用
- 第6章 C#常用数据类型的检查与转换 136
- 6.1 数值数据类型的检查与转换 136
- 6.1.1 整数检查 136
- 6.1.2 实数检查 137
- 6.1.3 整数和字符串之间的转换 138
- 6.1.4 浮点数和字符串之间的转换 140
- 6.2 布尔数据类型检查与转换 141
- 6.2.1 布尔值检查 141
- 6.2.2 布尔值和字符串之间的转换 141
- 6.3 时间数据类型检查与转换 142
- 6.3.1 时间数据类型检查 142
- 6.3.2 时间和字符串之间的转换 143
- 6.4 数据类型检查与转换应用实例 144
- 第7章 不可变字符串与可变字符串的处理 146
- 7.1 15种不可变字符串String处理 146
- 7.1.1 String类和对象 146
- 7.1.2 插入字符串 147
- 7.1.3 替换字符串 147
- 7.1.4 填充字符串 148
- 7.1.5 删除字符串 149
- 7.1.6 分割字符串 149
- 7.1.7 比较字符串 150
- 7.1.8 连接字符串 151
- 7.1.9 处理字符串中的空白 152
- 7.1.10 转换字符串大小写 153
- 7.1.11 匹配和检索字符串 153
- 7.1.12 格式化字符串 156
- 7.1.13 获取子字符串 156
- 7.1.14 编码字符串 157
- 7.1.15 不可变字符串String处理的应用 157
- 7.2 8种可变字符串StringBuilder处理 159
- 7.2.1 StringBuilder类和对象 159
- 7.2.2 追加字符串 159
- 7.2.3 插入字符串 161
- 7.2.4 替换字符串 162
- 7.2.5 删除字符串 163
- 7.2.6 复制字符串 164
- 7.2.7 处理字符串容量 165
- 7.2.8 可变字符串StringBuilder处理的应用 165
- 第8章 常见的.NET框架中正则表达式及其应用 167
- 8.1 10种.NET框架中的正则表达式类库 167
- 8.1.1 System.Text.RegularExpressions命名空间 167
- 8.1.2 正则表达式类Regex 168
- 8.1.3 正则表达式选项 168
- 8.1.4 检查是否匹配表达式 169
- 8.1.5 匹配单个匹配项 170
- 8.1.6 匹配多个匹配项 171
- 8.1.7 替换 173
- 8.1.8 使用委托MatchEvaluator处理匹配结果 174
- 8.1.9 获取分组名称 175
- 8.1.10 分割表达式 175
- 8.2 14种正则表达式类Regex处理字符串 176
- 8.2.1 只包含数字验证 176
- 8.2.2 整数验证 176
- 8.2.3 实数验证 176
- 8.2.4 电话号码验证 177
- 8.2.5 邮政编码验证 177
- 8.2.6 身份证号码验证 177
- 8.2.7 银行卡号验证 177
- 8.2.8 IP地址验证 178
- 8.2.9 日期和时间验证 178
- 8.2.10 车牌号码验证 178
- 8.2.11 电子邮件验证 179
- 8.2.12 URL验证 179
- 8.2.13 提取网页标题 179
- 8.2.14 提取网页中的图像地址 180
- 8.2.15 提取网页中的HTTP地址 181
- 第9章 常见ASP.NET验证控件 183
- 9.1 ASP.NET验证简介 183
- 9.2 2种非空验证 184
- 9.2.1 无初始值的非空验证 185
- 9.2.2 指定初始值的验证 185
- 9.3 3种范围验证 186
- 9.3.1 整数范围验证 186
- 9.3.2 字母范围验证 187
- 9.3.3 日期范围验证 188
- 9.4 3种比较验证 189
- 9.4.1 两个控件内容的比较验证 189
- 9.4.2 检查控件内容的数据类型 190
- 9.4.3 指定的值和控件内容的比较验证 191
- 9.5 2种自定义验证 192
- 9.5.1 自定义客户端验证 192
- 9.5.2 自定义服务端验证 193
- 9.6 7种正则表达式验证 194
- 9.6.1 整数验证 194
- 9.6.2 数值验证 195
- 9.6.3 电话号码验证 196
- 9.6.4 身份证号码验证 197
- 9.6.5 电子邮件验证 198
- 9.6.6 日期和时间验证 199
- 9.6.7 URL验证 200
- 9.7 2种显示验证摘要 201
- 9.7.1 在对话框上显示验证摘要 201
- 9.7.2 在网页上显示验证摘要 202
- 第3篇 PHP正则表达式应用
- 第10章 常见PHP数据类型 204
- 10.1 7种PHP常见数据类型 204
- 10.1.1 布尔型 204
- 10.1.2 NULL型 204
- 10.1.3 整型 205
- 10.1.4 浮点型 205
- 10.1.5 字符串 205
- 10.1.6 数组 207
- 10.1.7 对象 208
- 10.2 5种常见的类型转化 209
- 10.2.1 变量类型变化 209
- 10.2.2 强制类型转换 210
- 10.2.3 字符串转化 212
- 10.2.4 数字转化 212
- 10.2.5 数组转化 213
- 10.3 小结 213
- 第11章 常见PHP字符串处理 214
- 11.1 常见的3种字符串分析 214
- 11.1.1 访问字符串中的字符 214
- 11.1.2 处理子字符串 215
- 11.1.3 分割字符串 217
- 11.2 4种字符串的操作 218
- 11.2.1 删除字符串的空白 218
- 11.2.2 转换字符串大小写 219
- 11.2.3 填补字符串 220
- 11.2.4 反转字符串 221
- 11.3 2种字符串的格式化 221
- 11.3.1 格式化数字 221
- 11.3.2 格式化字符串 222
- 11.4 字符串的查找和替换 224
- 11.4.1 查找字符串 224
- 11.4.2 替换字符串 225
- 11.5 3种常见的字符串的比较方法 227
- 11.5.1 按ASCII码顺序比较 227
- 11.5.2 按“自然排序”法比较 228
- 11.5.3 按相似性比较 229
- 11.6 处理HTML和URL 230
- 11.6.1 HTML标签的清理 230
- 11.6.2 HTML实体的处理 231
- 11.6.3 URL字符串的解析 232
- 11.6.4 URL编码处理 234
- 11.6.5 查询字符串的构造 235
- 11.7 小结 236
- 第12章 PHP与正则表达式的应用 237
- 12.1 关于POSIX扩展库的正则表达式函数 237
- 12.1.1 模式匹配 237
- 12.1.2 模式替换 238
- 12.1.3 模式分割 239
- 12.2 关于PCRE库的正则表达式函数 239
- 12.2.1 对正则表达式匹配 240
- 12.2.2 取得正则表达式的全部匹配 241
- 12.2.3 返回与模式匹配的数组单元 241
- 12.2.4 正则表达式的替换 242
- 12.2.5 正则表达式的拆分 243
- 12.3 PHP与正则表达式的综合应用 243
- 12.3.1 表单验证 243
- 12.3.2 UBB代码 247
- 12.3.3 分析Apache日志文件 251
- 12.4 小结 254
- 第4篇 JSP正则表达式应用
- 第13章 常见的JSP中数据处理 255
- 13.1 5种JSP中的常用数据类型 255
- 13.1.1 整数类型及应用 255
- 13.1.2 浮点类型及应用 258
- 13.1.3 字符类型及应用 259
- 13.1.4 布尔类型及应用 260
- 13.1.5 字符串类型及应用 261
- 13.2 2种JSP中数据类型的转换 262
- 13.2.1 自动类型转换及应用 262
- 13.2.2 强制类型转换及应用 263
- 13.3 7种JSP中字符串数据的处理 264
- 13.3.1 字符串与其他类型数据的转换 264
- 13.3.2 字符串的分析 265
- 13.3.3 字符串的查找与替换 267
- 13.3.4 字符串数据的整理 268
- 13.3.5 字符串的比较 269
- 13.3.6 字符串的连接 270
- 13.3.7 字符串的格式化 271
- 13.4 小结 272
- 第14章 常见的JSP中正则表达式 273
- 14.1 2种JSP中的正则表达式函数 273
- 14.1.1 Pattern类 273
- 14.1.2 Matcher类 275
- 14.1.3 正则表达式常用的四种功能 278
- 14.2 JSP中正则表达式的常见应用示例 282
- 14.2.1 电子邮件地址的校验 282
- 14.2.2 URL地址的校验 283
- 14.2.3 电话号码的校验 284
- 14.3 小结 286
- 第5篇 JavaScript正则表达式应用
- 第15章 常见的JavaScript中数据类型及其转化 287
- 15.1 常见的三种JavaScript数据类型 287
- 15.1.1 数字基本类型 287
- 15.1.2 字符串基本类型 288
- 15.1.3 布尔值基本类型 289
- 15.2 数据类型转化 289
- 15.2.1 基本数据类型转换 289
- 15.2.2 将字符串转化为整数 290
- 15.2.3 将字符串转化为浮点数 290
- 第16章 常见JavaScript字符串和数组处理 291
- 16.1 6种字符串格式处理 291
- 16.1.1 获取字符串的长度 291
- 16.1.2 根据指定的Unicode编码返回一个字符串 291
- 16.1.3 将字符串分割并存储到数组中 292
- 16.1.4 比较两个字符串的大小 292
- 16.1.5 将字符串转化为小写格式 293
- 16.1.6 将字符串转化为大写格式 294
- 16.2 最基本的字符串查找、替换 294
- 16.2.1 获取指定字符(串)第一次在字符串中出现的位置 294
- 16.2.2 获取指定字符(串)最后一次在字符串中出现的位置 295
- 16.2.3 替换字符串中指定的内容 296
- 16.3 字符串截取、组合的方法 296
- 16.3.1 返回字符串中指定位置处的字符 297
- 16.3.2 将一个或多个字符串连接到当前字符串的末尾 298
- 16.3.3 获取指定位置的字符的Unicode编码 298
- 16.3.4 从字符串中提取子串(1) 299
- 16.3.5 从字符串中提取子串(2) 300
- 16.3.6 从字符串中提取子串(3) 301
- 16.4 字符串HTML格式化 301
- 16.4.1 在字符串两端加入锚点标志 302
- 16.4.2 在字符串的两端加上粗体标志 302
- 16.4.3 在字符串两端加入斜体标签 302
- 16.4.4 在指定字符串的两端加上大字体标志 303
- 16.4.5 在字符串的两端加上固定宽度字体标记 303
- 16.4.6 设置字符串输出时的字体大小 304
- 16.4.7 设置字符串输出时的前景色 305
- 16.4.8 在字符串上加入超链接 305
- 16.4.9 在字符串两端加上小字体标记 306
- 16.4.10 在字符串两端加入下标标签 307
- 16.4.11 在字符串两端加入上标标签 307
- 16.4.12 在字符串的两端加入下画线标记 308
- 16.5 Array对象的方法及使用 308
- 16.5.1 连接其他数组到当前数组末尾 309
- 16.5.2 将数组元素连接为字符串 309
- 16.5.3 删除数组中的第一个元素 310
- 16.5.4 删除数组中最后一个元素 310
- 16.5.5 删除或替换数组中部分数据 311
- 16.5.6 将指定的数据添加到数组中 312
- 16.5.7 在数组前面插入数据 313
- 16.5.8 获取数组中的一部分数据 313
- 16.5.9 反序排列数组中的元素 314
- 16.5.10 对数组中的元素进行排序 314
- 16.5.11 返回一个包含数组中全部数据的字符串 315
- 第17章 常见JavaScript正则表达式应用 317
- 17.1 正则表达式对象RegExp及其应用 317
- 17.1.1 正则表达式的创建 317
- 17.1.2 判断字符串中是否存在匹配内容 317
- 17.1.3 对字符串进行匹配检测 318
- 17.1.4 编译正则表达式 319
- 17.1.5 替换字符串中的指定内容 320
- 17.2 处理匹配的结果 320
- 17.2.1 获取字符串中所有的匹配信息 320
- 17.2.2 获取第一次匹配的起始位置(1) 321
- 17.2.3 获取第一次匹配的起始位置(2) 322
- 17.2.4 获取子匹配的结果 322
- 17.2.5 获取与正则表达式进行匹配检测的字符串 324
- 17.2.6 获取最近一次匹配的内容 324
- 17.2.7 获取最近一次匹配的最后一个子匹配 325
- 17.2.8 获取匹配的内容的最后一个索引位置 325
- 17.2.9 获取匹配内容左侧的字符信息 326
- 17.2.10 获取匹配内容右侧的字符信息 327