# JS正規化 ###### tags: `PID` 僅收錄常用規則, \b以及(?=), (?:)請自行查找 ## 格式 ```javascript= /[規則]/ ``` ## 規則總類(基礎) ### /a/ 輸入的字串裡需要滿足有一個a ```javascript= /a/.test('a') //true /a/.test('aa') //true /a/.test('b') //false ``` ### /^a/ 字串開頭必須為a ```javascript= /a/.test('a') //true /a/.test('ab') //true /a/.test('ba') //false ``` ### /a$/ 字串結尾必須為a ```javascript= /a/.test('a') //true /a/.test('ab') //false /a/.test('ba') //true ``` ### /[abc]/ 字串中需要包含一個a或b或c (這邊的或會和後面的或有所不同, 這邊指的是字元) ```javascript= /[abc]/.test('a') //true /[abc]/.test('abc') //true /[abc]/.test('ad') //true /[abc]/.test('d') //false ``` ### /[a-z]/ 字串中需要包含一個a~z其中一個 ### /[^a]/ 不包含a, 這邊會有很大的問題, 如果只是單單打/[^a]/, 大部分都會通過 ```javascript= /[^a]/.test('a') //false /[^a]/.test('ac') //true /[^a]/.test('da') //true /[^a]/.test('d') //true ``` 因為正規化是只要有一個字元符合, 整個字串就是符合, 如果要整個字串都不能有a ```javascript= /^[^a]+$/.test('a') //false /^[^a]+$/.test('ac') //false /^[^a]+$/.test('da') //false /^[^a]+$/.test('d') //true ``` 這個規則表示, 整個字串中, 可以包含至少一個不含a的字元, +後面會再敘述 ### /a{1,2}/ 整個字串中需要包含1~2個連在一起的a ```javascript= /a{1,2}/.test('a') //true /a{1,2}/.test('aa') //true /a{1,2}/.test('aaa') //true /a{1,2}/.test('b') //false ``` ### /a{2}/ 整個字串需要包含兩個連在一起的a ```javascript= /a{2}/.test('a') //false /a{2}/.test('aa') //true /a{2}/.test('aba') //false ``` ### /\ // (這裡不會有一個空格, 只是配合md格式) 整個字串需要包含一個/符號, 特殊符號前面需要加上反斜線 ```javascript= /\//.test('>//<') //true ``` ### /(jpg|svg|png|swf)/ 表示字串中需要有這四個字串中的其中一個 (這裡的或指的是字串) ```javascript= /(jpg|svg|png|swf)/.test('jpg') //true /(jpg|svg|png|swf)/.test('jpn') //false /(jpg|svg|png|swf)/.test('qcewjpgcdw') //true ``` ## 規則總類(簡寫) ### /a*/ 與/a{0,}/等價, 需要0個以上的a ```javascript= /a*/.test('a') //true /a*/.test('b') //true /a*/.test('aa') //true ``` ### /a+/ 與/a{1,}/等價, 需要1個以上的a ```javascript= /a*/.test('a') //true /a*/.test('b') //false /a*/.test('aa') //true ``` ### /a?/ 與/a{0,1}/等價, 需要0個或1個a, 但是跟前面一樣, 如果是整個字串就需要加上限制 ```javascript= /a?/.test('a') //true /a?/.test('b') //true /a?/.test('aa') //true ``` ### /\d/ 與/[0-9]/等價 ### /\w/ 與/[A-Za-z0-9_]/等價 ### /\s/ 與/[\t\r\n\v\f]/等價, 指的是所有空白字元 ## 特別收錄 ### 至少一個大寫 ```javascript= /^(?=.*[A-Z])\w+$/ ```