[JavaScript] 來寫正規表達式Regex - Medium
文章推薦指數: 80 %
... 元符合條件及次數。
ref: [實用] 用Regular Expression 做字串比對[Javascript] 初探Regex 正規表達式正規表示式Regular Expression 動動手來學…
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWritePublishedinitsems_frontend[JavaScript]來寫正規表達式RegexPhotobyKellySikkemaonUnsplashOutline:-正規表達式是什麼?-JS怎麼寫?-規則有什麼?-什麼時候會用到?正規表達式是什麼?作為一位前端要做表單驗證是常有的事,正規表達式RegularExpression,又簡稱為Regex或RegExp,是一種以數學邏輯來幫你做判斷,用得熟悉自己就可以少寫很多判斷的利器。
JS怎麼寫?在定義正規表達式上,可以用兩個/夾住條件:(效能較佳)construles=/[a-z]/也可以新增一個RegExp物件:varrules=newRegExp('[0-9]')有一個test()method可以拿來測試用:varstr='emma';//驗證字串為a~z的字母construles=/[a-z]/;console.log(rules.test(str));//true也可以把條件直接拿去test():console.log(/\d/.test(str));//false規則有什麼?其實理解使用的原理,可以在需要的時候再來查表拼湊就可以了,完整的規則可以看MDN官方文件,這邊列舉幾個比較常用的:小撇步:大小寫的英文單字都是相對的意思驗證字元:/./:任意字元。
符合範例:「emma@」/a/:字串含a。
符合範例:「aa」、「dfas」/a./:字串含a,以及其後面任一字元。
不符合範例:「fa」特定字元:[A-Z]:大寫英文字母[a-z]:小寫英文字母[0–9]:數字0–9\d:數字\D:非數字\w:數字字母與底線,等同[A-Za-z0–9_]\W:非數字字母與底線,等同[^A-Za-z0–9_]\s:空白字元\S:非空白字元開頭結尾:^:比對內容的開始位置$:比對內容的結束位置/^em/:開頭是em/ma$/:結尾是ma/^emma$/:是否有emma/^em|ma$/:開頭是em,結尾是ma多個字元:[]:驗證括弧內的每一個字元[^]:反過來/[abc]/:包含a或b或c/[^abc]/:不包含a或b或c次數:*:0次以上+:1次以上?:0次或1次{m}:m次{n,}:最少n次{m,n}:m次到n次{m,n}?:m次到n次之間最少次的注意:條件上時常要記得在開頭加上^,結尾加上$,否則會在開頭達成條件之後就當作達成條件了,沒有驗證完整的字串/^a{1,3}$/:a出現了1~3次/emm+/:emm後面出現一個以上的a。
如:「emma」、「asdfemmasdf」什麼時候會用到?這邊再嘗試看看幾種常會用到的情境:Apple密碼格式:1.至少8個字元2.要有大小寫字母3.至少一個數字寫出來會是這樣:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/嗄,好複雜,一個一個來看:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/一個括弧是一個group,?=的意思是後面加誰,x(?=y)的意思是有x且後面接y,.*則是任何字元出現0次以上的,[a-z]則是小寫英文。
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/[A-Z]大寫英文,\d數字/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/大小寫英文字,數字,符合至少8次所以整段話我理解為,?=沒有設定在誰後面,但是一定要接符合條件的字元,可以當作一定要有的意思,最後的[a-zA-Z\d]{8,}則再個別驗證符合三個group條件後,每一個字元符合條件及次數。
或是這也是一種常見的密碼規定:至少8碼,要有大寫英文、小寫英文、數字,和特殊符號跟剛剛有一點點不太一樣:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/不一樣的地方是:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/一樣道理,@$!%*?&就是要包含這些特殊符號的意思。
Email:/^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/手機號碼:/^09\d{8}$/身分證字號:/^[A-Z]{1}[1-2]{1}[0-9]{8}$/這邊推薦一個可以自己動手玩的網站:regex101有很多可以線上測試自己的條件的地方,這個網站可以把你寫的條件規則寫出來,如果是在別的地方找到的條件,可以拿來這邊試著解讀內容若有任何錯誤,歡迎留言交流指教!🐬ref:[實用]用RegularExpression做字串比對[Javascript]初探Regex正規表達式正規表示式RegularExpression動動手來學RegularExpression正規表達式--1Morefromitsems_frontendStayClosetoAnythingthatMakesYouGladYouareAlive.Readmorefromitsems_frontendAboutHelpTermsPrivacyGettheMediumappGetstarteditsems513FollowersStayClosetoAnythingthatMakesYouGladYouareAlive.FollowMorefromMediumJuliaR.DeStefanoCollideMarioWorldinILLUMINATION’SMIRRORCurrently,Iambadlyaddictedto …RakshaJIamaddictedLifeofaPre-MedStudentHowtoStandoutwhenApplyingtoMedicalSchool!HelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1[JS學習筆記] 正規表達式 - 1010Code
正規表達式由於最近工作寫API 動到Router 的param 發現必須使用到正規表達式(Regular Expression)才能解決問題所以就來寫這篇文章啦!
- 2[JS] 正則表達式(Regular Expression, regex) - PJCHENder
[JS] 正則表達式(Regular Expression, regex). 'str'.match(/[0-9]+ ...
- 33-15:正規表示法:表單資料驗證
「正規表示法」或「正規式」(Regular expressions)是在UNIX 世界中發展出來的字 ... Netscape 及IE 在第四版後都支援JavaScript 的正規表示法,特別適...
- 4十五分鐘認識正規表達式,解決所有文字難題
正規表達式(Regular Expression),是一種用來描述字串 符合某個語法規則 的 ... 的程式語言中都支援正規表達式的使用,以下範例將以Javascript 為例。
- 5[Javascript]常用正則表達式及驗證| Ting I 的程式碼集中營- 點部落
正規表示式(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE)是使用單個字串來描述、符合一系列符合某個句法規則的字串。