SQL語句可以搭配正規表達式作為查詢條件,實作很多需求。
REGEXP_LIKE 比對:REGEXP_LIKE(String, Regexp)
REGEXP_INSTR 包含
EGEXP_REPLACE 替換
REGEXP_SUBSTR 提取
正規表達式常用字元:
字元 | 說明 |
---|---|
^ | 比對字元串的開始位置,若用在中括号中[ ] 時,表示不比對括号中字元串 |
$ | 比對字元串的末尾,若設定了表達式對象的Multiline屬性,則也比對’/n’或’/r’ |
. | 比對單個字元 |
* | 比對前面子表達式 0次或多次(至少有一次) |
? | 比對前面子表達式 0 次或 1 次 (至多有一次) |
+ | 比對前面子表達式 1 次或更多次 |
{m} | 比對 m 次 |
{m,} | 至少比對 m 次 |
{m, n} | 至少比對 m 次但不超過 n 次 |
() | 比對括号中全部字元 |
[] | 比對括号中一個字元,範圍描述,如[0-9] [a-z] [A-Z] |
{} | 用于限定比對次數,如 {n}表示比對n個字元,{n,}表示至少比對n個字元,{n,m}表示至少n個最多m個 |
\ | 轉義字元,如上基本符号比對都需要轉義字元 ,如 * 表示比對*号 |
\w | 表示英文字母和數字 |
\W | 表示非字母和數字 |
\d | 表示數字 |
\D | 表示非數字 |
常用的正規表達式:
比對由26個英文字母組成的字元串: ^[A-Za-z]+$
比對由26個英文字母的大寫組成的字元串: ^[A-Z]+$
比對由26個英文字母的小寫組成的字元串: ^[a-z]+$
比對由數字和26個英文字母組成的字元串: ^[A-Za-z0-9]+$
比對由數字和26個英文字母或者下劃線組成的字元串: ^\w+$
比對整數: ^-?[1-9]\d*$
比對正整數: ^[1-9]\d*$
比對負整數: ^-[1-9]\d*$
比對非負整數: ^[1-9]\d*|0$
比對非正整數: ^-[1-9]\d*|0$
電子郵箱: ^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$
URL : ^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
IP位址: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
HTML标簽: ^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$
SQL語句: ^(select|drop|delete|create|update|insert).*$
郵政編碼: ^[1-9]\d{5}(?!\d)$
Unicode編碼中文字元串: ^[u4e00-u9fa5],{0,}$
空白行: \n[\s| ]*\r
首尾空格: (^\s*)|(\s*$)
雙位元組字元: [^\x00-\xff]