發表文章

目前顯示的是 11月, 2015的文章

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]全形字元