## 前言
* 正則表達式,對字符串進行模式匹配的工具對象。一般對象都有兩種創建方式:
* 對象示例,通過new obj() 類似的方式
* 直接量語法,也就是直接賦值。var pattern=/^$/
備注:目前建議的是perl風格的正則表達式,簡易易懂。
## 簡單了解
### 標準語法
1. 創建的語法 :
new RegExp(pattern, attributes);
其中pattern代表匹配模式,arrtibutes代表匹配限制,匹配限制中有g,i,m,g代表執行全局匹配,i代表執行大小寫不敏感的匹配,m代表多行匹配。
2. 舉例
[A-z] 大寫A到小寫z之間的字符
[0-9]0-9之間的任意數字
[^avb] 不屬于avb之間的字符
3. 正則對象的常用方法
reg.test(str) 返回布爾型數據 ,可以檢測是否符合規則
4. 拓展:String對象對正則的使用
search(reg) ;match(reg),split(reg),replace(reg,str),etc...
### 正則對象語法
* 元字符,用來匹配的基本字符,直接量字符

* 正則量詞(出現次數)

* 選擇 分組和引用
> | 選擇 或者
> ()組合 將幾個項組合為一個單元,這些單元可以通過數量修飾以及|連接
> (?:...)只組合,把項組合到一個單元,但不記憶與該組相匹配的字符。
> \n 和第n個分組第一次匹配的字符相匹配。
* 指定匹配位置與修飾符
> ?! 負向斷言,當不符合前面的匹配時,后面的語句不在進行匹配。
> ^ 匹配的開始 $ 匹配的結束
> \b 單詞的邊界 \B 非單詞的邊界
> 修飾符
> i 執行不區分大小寫的匹配
> g執行全局的匹配,找到所有的匹配,而不是找到一個后停止
> m 多行匹配模式
* 用于模式匹配的String 的方法
> search(patt) 返回第一個匹配的指針位置
> replace(patt) 吧復合匹配規則的字符串替換為規定的字符串
> match(patt) 返回匹配的字符串數組,如果沒有返回null,如果設置了修飾符g則會返回所有的復合結果,否則返回第一個。返回的屬性是index和input
> split(patt) 可以按照指定的模式劃分
* 對象方法:
> * exec(str)與str.match(patt)有點類似,如果找不到返回null,如果能找到,返回一個數組。返回的第一個元素是與表達式匹配的字符串,余下的元素是與圓括號內的子表達式相匹配的子串。屬性index包含了匹配發生的位置,屬性input引用的是正在檢索的字符串。與match不同的是,不管是否具有g屬性修飾,返回的都是數組。
> * test(str) 返回布爾型,符合規范是true,不符合是false
>* patt1.compile(patt2),改變patt 的內容
* 常用的正則表達式枚舉:
* /^[1][0-9]{10}$/ 11位的手機號,以1開始的
* /^[a-zA-Z0-9](([a-zA-Z0-9_\-\.]*[a-zA-Z0-9])*[@]([a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])*[\.])+)([a-zA-Z]{2,5})$/ 郵箱
* /^[0-9]{6}$/ 6位的數字驗證碼
* 姓名
* 身份證號
* 地址
* 密碼
* 相關教程:
* [教程](http://deerchao.net/tutorials/regex/regex.htm)
* [常用正則](http://deerchao.net/tutorials/regex/common.htm)
* [在線測試正則工具]( http://tool.oschina.net/regex#)(不需要寫雙斜線)
- 前端入門
- 前端入職須知
- 前端自我定位
- pc與手機頁面差別
- 前端書單
- 前端種子計劃
- 前端技術棧
- ps
- ps入門階段
- html
- html入門
- html代碼規范
- meta
- table
- iframe
- a標簽詳解
- image
- html代碼審查工具
- h5專題
- h5入門
- h5新增屬性
- canvas畫布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入門必學
- css代碼規范
- 項目字體規范
- css基本位置布局
- css常見樣式命名規則
- css代碼優化建議
- css常用樣式名
- css選擇器攻略
- css盒子模型的理解
- css屬性繼承與默認值
- css代碼審查工具
- css中常見的知識盲區
- css3新特性淺談
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技術
- 文本兩端對齊
- css之浮動解決方案
- css優化建議
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固寬&變寬布局
- 寬高固定比例的盒模型
- 樣式預處理語言
- less教程
- sass教程
- postcss教程
- js
- javascript入門
- js代碼規范
- js基礎拓展
- js代碼審查工具
- js性能優化
- js基本語句
- 基本運算
- 基本語句語法
- js對象
- es6入門
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入門
- jq核心思想
- jq基本語法
- jq插件庫匯總
- js常用技術
- break&continue區別
- js對日期轉換
- js控制運動-move.js
- 原生js-cookie語法
- ajax請求后回調
- 表單數據序列化
- zepto
- zepto入門
- 百度touchjs
- js編程
- 插件庫
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互組件
- layerjs
- java
- java入門
- java基本語句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入門
- git教程
- git入門
- git分支
- git-tag管理
- git注意事項
- git-torise入門
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容適配文檔
- pc端兼容bug匯總
- ie兼容bug匯總
- 手機兼容bug匯總
- web安全
- jeecms
- web存儲
- app/h5組件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域問題
- markdown教程
- 常用工具
- postman-api調試
- web常識
- 瀏覽器ua統計
- ui框架
- easyui
- bootstrap
- 入門推薦
- weui
- sui-pc
- sui-mobile
- layerUi