《神奇的匹配:正則表達式求精之旅》是2014年8月電子工業出版社出版的圖書,作者是王蕾。
基本介紹
- 書名:神奇的匹配:正則表達式求精之旅
- 作者:王蕾
- ISBN:9787121236563
- 頁數:344頁
- 定價:59.00元
- 出版社:電子工業出版社
- 出版時間:2014年8月
- 開本:16開
內容簡介,目錄,前言,
內容簡介
《神奇的匹配:正則表達式求精之旅》從正則表達式的基本概念、基本語法入手,著重於數字驗證、字元串驗證、數字和字元串混合驗證及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
前言
正則表達式(正規表示法、常規表示法),在代碼中通常簡寫為regex、regexp或RE,它使用單個字元串來描述、匹配一系列符合某個句法規則的字元串。在很多文本編輯器中,正則表達式通常被用來檢索、替換那些符合某個模式的文本,並且,正則表達式已經得到許多腳本語言、程式語言和資料庫的良好支持。
正則表達式在過去十多年間越來越普及,如今所有常用的程式語言都會包含一個強大的正則表達式函式館,有的甚至其語言本身就內嵌了對正則表達式的支持。許多開發人員都會利用這些正則表達式的功能,在應用程式中為用戶提供使用正則表達式對其數據進行查找或者過濾的功能。隨著正則表達式的廣泛套用,市面上出現了許多相關的著作,大多數這類書籍都能很好地講解正則表達式的語法,並且還會提供一些示例以及參考文獻。然而,還沒有任何一本書能夠面向現實世界中使用的計算機,以及在各種網際網路套用中遇到的實際問題,為讀者提供基於正則表達式的解決方案。
本書詳細解釋了正則表達式的各個組成部分、含義、如何使用它們,以及在編寫正則表達式時如何避免常見的錯誤,並列舉了豐富的示例,打破了正則表達式難以掌握的傳統神話。讀者將學習到如何有效地駕馭正則表達式所提供的強大功能,並且全面理解正則表達式的高靈活性和無限潛能。
正則表達式的特點
(1)靈活性、邏輯性和功能性非常強。
(2)可以迅速地用極簡單的方式控制複雜的字元串。
(3)對於剛接觸的人來說,比較晦澀難懂。
本書的特點
1.覆蓋內容多
覆蓋了正則表達式的全部基本理論和語法,並給出了不同語言環境(如C#、Java、JavaScript或PHP等)下的各自相應的基本理論和語法。
2.多環境全面套用
幾乎覆蓋了正則表達式的所有套用,如數字處理、字元串處理、數字和字元串混合處理、HTML處理和編碼處理等。同時,本書講解了在不同環境下(如ASP.NET、JSP、PHP和客戶端)正則表達式的套用。
3.示例豐富
書中提供了大量正則表達式示例,數量多達540個。用戶可以直接從書中找到所需的正則表達式。
4.講解詳細、邏輯嚴整
本書詳細分析和講解了書中每一個正則表達式示例,並使用正則表達式測試工具進行了測試。
5.實用性強
書中的每一個正則表達式示例都是基於當前的流行套用,讀者不需要任何修改就可以直接使用。
本書的內容
第1章 介紹了正則表達式的基本概念、測試正則表達式的工具及基礎理論,如元字元、字元類、字元轉義、反義、限定符、替換、分組、反向引用、零寬度斷言、負向零寬度斷言、匹配選項、注釋、優先權順序、遞歸匹配等。這些理論將為編寫正則表達式提供法則和規範。
第2章 介紹了數字驗證,以及與數字相關的字元串驗證,如數值驗證、電話號碼驗證、郵政編碼驗證、IP位址驗證、身份證號碼驗證和銀行卡號驗證。
第3章 介紹了字元串的驗證,如英文單詞的驗證、檔案名稱稱的驗證、網路常用元素的驗證、非單詞字元串的驗證等。被驗證的字元串可能包含英文單詞字元、數字字元和特殊字元。特殊字元是指除英文單詞字元和數字字元之外的字元,如/、\、|、,和:等。
第4章 介紹了由數字和非數字字元組成的字元串的混合驗證,如日期和時間驗證、車牌號碼驗證、數學表達式驗證和編碼規範驗證等。
第5章 介紹了與HTML元素相關的驗證和處理。首先介紹了驗證HTML元素的基礎知識,如HTML標記驗證、非封閉HTML標記驗證、封閉HTML標記驗證、屬性賦值表達式驗證、注釋表達式驗證和腳本代碼驗證等。其次介紹了部分HTML元素的驗證,如<br>、<hr>、<a>和<input>等元素的驗證。最後介紹處理HTML元素的方法,如提取網頁中的標題、連結、圖片等。
第6章 介紹了C#常用數據類型檢查與轉換,如數值數據類型檢查與轉換、布爾數據類型檢查與轉換、時間數據類型檢查與轉換等。
第7章 介紹了不變字元串(由String類表示)和可變字元串(由StringBuilder類表示)的處理方法。不變字元串對象一旦被創建,那么該對象是不能被修改的;而可變字元串對象被創建之後,開發人員可以對該對象進行修改,如追加、移除、替換和插入等操作。
第8章 介紹了使用正則表達式類Regex來驗證、匹配、替換、分組和分割給定字元串的方法,以及使用正則表達式驗證給定的字元串是否滿足給定要求。最後,還介紹了使用正則表達式從網頁中提取網頁標題、HTTP地址、圖像地址等信息的方法。
第9章 介紹了ASP.NET中的驗證方法和伺服器端控制項。ASP.NET提供了一組驗證控制項,並提供了一種易用但功能強大的檢錯方式,同時在必要時還可以向用戶顯示錯誤信息。ASP.NET驗證提供了非空驗證、範圍驗證、比較驗證、正則表達式驗證、用戶自定義驗證等多種驗證方式,以及用於處理或集中顯示頁面上所有驗證控制項的提示或錯誤信息功能。
第10章 介紹了PHP的數據類型。同時,還講解了PHP中各種數據的轉換。
第11章 介紹了PHP中字元串的各種處理。通過這些處理,可以實現一些簡單的字元串檢驗功能。
第12章 介紹了在PHP中如何使用正則表達式,內容包括POSIX庫和PCRE庫的使用。
第13章 介紹了在JSP中,Java語言的數據類型、數據類型轉換和字元串的操作。
第14章 介紹了在JSP中,如何使用Java語言進行正則表達式驗證。其中,詳細講解了Pattern類和Matcher類的使用,以及JSP中正則表達式的套用舉例。
第15章 介紹了客戶端腳本JavaScript的數據類型和數據類型的轉換。
第16章 介紹了JavaScript中常見的字元串操作和數據處理。
第17章 介紹了常見的JavaScript正則表達式的套用。
適合的讀者
從事字元串處理、開發或研究的相關人員
網頁設計和製作人員
網頁製作愛好者
網站維護人員
網站建設及網路開發人員
進行畢業設計的學生
本書由王蕾(東華理工大學)編寫,同時參與編寫的還有張燕、杜海梅、孟春燕、吳金艷、鮑凱、龐雁豪、楊銳麗、鮑潔、王小龍、李亞傑、張彥梅、劉媛媛、李亞偉和張昆,在此一併表示感謝。