Oracle數據庫正則表達式


正則表達式:

無論是在前端還是后台正則表達式都是一個至關重要的知識點,例如判斷一個手機號碼輸入是否正確,如果使用Java、C或者其他語言進行字符串進行判斷,也許寫幾十行代碼都不一定能解決,而且漏洞百出,而使用正則表達式,一行代碼則可輕易解決,下面是舉例說明正則表達式的用法:


1: \d 代表一個(阿拉伯數字) 任意數字

  例如:判斷用戶輸入的是否為11位數字(當然手機號碼是不能這么簡答的表達,只是解釋一下\d的用法)

1   select 'ok'
2   from dual
3   where regexp_like('18812345678','\d\d\d\d\d\d\d\d\d\d\d')

 

 

2: . 代表一個(任意字母) 任意字母

  這里需要注意的是,如果輸入的數字確實需要字母  .   的話,不能直接輸  .   要轉換一下格式,輸入  \.  即可,這個需要注意。

 

3:    [[:number:]] 一個任意數字(可以使十六進制)

  這個用的並不多,如果現實十六進制,可以使用如下方式即可

1   select 'ok'
2   from dual
3   where regexp_like('str','[0-9a-fA-F]')

 


4: [[:alpha:]] 一個任意大小寫字母


5: [ ] 匹配到方括號內的其中一個字母

 

  方括號中只能匹配到其中的任意一個字母,或者是7 或者是8或者是9,只能是1個

1   select 'ok'
2   from dual
3   where regexp_like('8','[379]')

 

  例如下面的就是ASCII碼中,數字3到ASCII碼 小寫的 a 其中的任意一個字符的匹配

1  select 'ok'
2  from dual
3  where regexp_like('9','[3-a]') 

  

  當然如果是12345678這樣的連續的數字可以這么寫

1   select 'ok'
2   from dual
3   where regexp_like('str','[1-8]')

  

  如果是要匹配 12345678 中的其中一個,或者是字母 a也行,就可以這么寫,a可以寫到前邊,也可以寫到后面,這並無所謂,因為只匹配一個而已

1   select 'ok'
2   from dual
3   where regexp_like('str','[a1-8]')

 

6: () 單詞匹配

 

  單詞匹配,一般用豎線隔開,例如:小明喜歡吃蘋果或者香蕉或者櫻桃,此時就應該是用單詞的匹配,在圓括號中任選一個。

1   select 'ok'
2   from dual
3   where regexp_like('小明喜歡吃蘋果.','小明喜歡吃(蘋果|香蕉|櫻桃)\.')

 


7:量詞:來修飾左側的元素的數量,三個量詞
  7.1: * 0到任意多個
  7.2: + 1到任意多個
  7.3: ? 0或者1個


  {N},代表左側有N個數據,比如上面的手機號碼驗證,\d 需要輸入9個,這里就可以使用{N}來簡化一下,\d是數字,然后\d{10},代表這里有10個數字

1   select 'ok'
2   from dual
3   where regexp_like('str','1\d{10}')

  
  如果是:{2,10} 代表左側的東西 最少有2個,最多有10個

 


9:引導符: ^ :在正則表達式最前方使用 ^ ,代表只能按照表達式的格式去匹配


10:結束符: $ :在正則表達式最后面使用 ¥ ,代表只能按照表達式的格式去匹配


  出現前導符的原因:因為正則表達式只匹配"表達式匹配條件的內容",之外的不匹配

11:\n 換行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM