Java 使用 regular expression 正則表達,過濾特殊字元,反斜線處理重點


最近,挑戰我比較不熟悉的正則表達。發現返斜線常常是我會忽略的地方,所以特意嘗試了,並得出下列心得:
當我想要去在我的string中,過濾掉單引號(') 雙引號(") 左右中括號([ ]) 左右大括號({ }) 斜線(/) 以及反斜線(\)
時要怎麼做? 下面是java做validation的範例




e.g. Pattern(regexp = "[^'\"{}\\[\\]\\\\/]*", message = "名稱不得有'或\"或\\字元")


在 [ ] 裡面的^表示negative的意思,\" 是為了跳脫 " 這個字元(因為這是java字串的特殊字元)。
\\是為了跳脫\這個字元(理由同上),所以 \\[ 是為了跳脫 [ 這個regular expression裡的特殊字元。
若要使用「反斜線」呢,理所當然就是 \\\\ (四個反斜線)



以下,是我過去常需要使用,因此蒐集而來的string過濾正則:


for e-mail :
Pattern.compile( "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})quot; )


for 只允許有文字、數字(不可以有space):
Pattern.compile(^[A-Za-z0-9]+$)


for 不可以有空格:
Pattern.compile("[^\\s*\t\r\n]+$);


for 手機號碼(台灣)Pattern.compile("^09\d{2}-?\d{3}-?\d{3}$);


for 繁體中文:
[\u4E00-\u9FA5]漢字, [\uFE30-\uFFA0]全形字元

留言

這個網誌中的熱門文章

7-ELEVEN 電子發票明細查詢方式

如何在Android Studio中,取得SHA憑證指紋 | Firebase