共計(jì) 3993 個(gè)字符,預(yù)計(jì)需要花費(fèi) 10 分鐘才能閱讀完成。
這篇文章給大家分享的是有關(guān) Oracle 正則表達(dá)式怎么用的內(nèi)容。丸趣 TV 小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨丸趣 TV 小編過(guò)來(lái)看看吧。
oracle 正則表達(dá)式 ORACLE 中的支持正則表達(dá)式的函數(shù)主要有下面四個(gè):
1,REGEXP_LIKE:與 LIKE 的功能相似
2,REGEXP_INSTR:與 INSTR 的功能相似
3,REGEXP_SUBSTR:與 SUBSTR 的功能相似
4,REGEXP_REPLACE:與 REPLACE 的功能相似
它們?cè)谟梅ㄉ吓c Oracle SQL 函數(shù) LIKE、INSTR、SUBSTR 和 REPLACE 用法相同,
但是它們使用 POSIX 正則表達(dá)式代替了老的百分號(hào)(%)和通配符(_)字符。
POSIX 正則表達(dá)式由標(biāo)準(zhǔn)的元字符(metacharacters)所構(gòu)成:
^ 匹配輸入字符串的開(kāi)始位置,在方括號(hào)表達(dá)式中使用,此時(shí)它表示不接受該字符集合。
$ 匹配輸入字符串的結(jié)尾位置。如果設(shè)置了 RegExp 對(duì)象的 Multiline 屬性,則 $ 也匹
配 \\n 或 \\r。
. 匹配除換行符之外的任何單字符。
? 匹配前面的子表達(dá)式零次或一次。
+ 匹配前面的子表達(dá)式一次或多次。
* 匹配前面的子表達(dá)式零次或多次。
| 指明兩項(xiàng)之間的一個(gè)選擇。例子 ^([a-z]+|[0-9]+)$ 表示所有小寫(xiě)字母或數(shù)字組合成的
字符串。
() 標(biāo)記一個(gè)子表達(dá)式的開(kāi)始和結(jié)束位置。
[] 標(biāo)記一個(gè)中括號(hào)表達(dá)式。
{m,n} 一個(gè)精確地出現(xiàn)次數(shù)范圍,m= 出現(xiàn)次數(shù) =n,{m} 表示出現(xiàn) m 次,{m,} 表示至少
出現(xiàn) m 次。
\\num 匹配 num,其中 num 是一個(gè)正整數(shù)。對(duì)所獲取的匹配的引用。
字符簇:
[[:alpha:]] 任何字母。
[[:digit:]] 任何數(shù)字。
[[:alnum:]] 任何字母和數(shù)字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大寫(xiě)字母。
[[:lower:]] 任何小寫(xiě)字母。
[[:punct:]] 任何標(biāo)點(diǎn)符號(hào)。
[[:xdigit:]] 任何 16 進(jìn)制的數(shù)字,相當(dāng)于 [0-9a-fA-F]。
各種操作符的運(yùn)算優(yōu)先級(jí)
\\ 轉(zhuǎn)義符
(), (?:), (?=), [] 圓括號(hào)和方括號(hào)
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, anymetacharacter 位置和順序
|
*/
– 創(chuàng)建表
create table fzq
(
id varchar(4),
value varchar(10)
);
– 數(shù)據(jù)插入
insert into fzq values
(1 , 1234560
insert into fzq values
(2 , 1234560
insert into fzq values
(3 , 1b3b560
insert into fzq values
(4 , abc
insert into fzq values
(5 , abcde
insert into fzq values
(6 , ADREasx
insert into fzq values
(7 , 123 45
insert into fzq values
(8 , adc de
insert into fzq values
(9 , adc,.de
insert into fzq values
(10 , 1B
insert into fzq values
(10 , abcbvbnb
insert into fzq values
(11 , 11114560
insert into fzq values
(11 , 11124560
–regexp_like
– 查詢 value 中以 1 開(kāi)頭 60 結(jié)束的記錄并且長(zhǎng)度是 7 位
select * from fzq where value like 1____60
select * from fzq where regexp_like(value, 1….60
– 查詢 value 中以 1 開(kāi)頭 60 結(jié)束的記錄并且長(zhǎng)度是 7 位并且全部是數(shù)字的記錄。
– 使用 like 就不是很好實(shí)現(xiàn)了。
select * from fzq where regexp_like(value, 1[0-9]{4}60
— 也可以這樣實(shí)現(xiàn),使用字符集。
select * from fzq where regexp_like(value, 1[[:digit:]]{4}60
— 查詢 value 中不是純數(shù)字的記錄
select * from fzq where not regexp_like(value, ^[[:digit:]]+$
— 查詢 value 中不包含任何數(shù)字的記錄。
select * from fzq where regexp_like(value, ^[^[:digit:]]+$
– 查詢以 12 或者 1b 開(kāi)頭的記錄. 不區(qū)分大小寫(xiě)。
select * from fzq where regexp_like(value, ^1[2b] , i
– 查詢以 12 或者 1b 開(kāi)頭的記錄. 區(qū)分大小寫(xiě)。
select * from fzq where regexp_like(value, ^1[2B]
— 查詢數(shù)據(jù)中包含空白的記錄。
select * from fzq where regexp_like(value, [[:space:]]
– 查詢所有包含小寫(xiě)字母或者數(shù)字的記錄。
select * from fzq where regexp_like(value, ^([a-z]+|[0-9]+)$
– 查詢?nèi)魏伟瑯?biāo)點(diǎn)符號(hào)的記錄。
select * from fzq where regexp_like(value, [[:punct:]]
正則表達(dá)式用于字符串處理、表單驗(yàn)證等場(chǎng)合,實(shí)用高效。現(xiàn)將一些常用的表達(dá)式收集于此,以備不時(shí)之需。
用戶名:/^[a-z0-9_-]{3,16}$/
密碼:/^[a-z0-9_-]{6,18}$/
十六進(jìn)制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
電子郵箱:/^([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 標(biāo)簽:/^ ([a-z]+)([^]+)*(?: (.*) \\ 1= |\\s+\\/ )$/
Unicode 編碼中的漢字范圍:/^[u4e00-u9fa5],{0,}$/
匹配中文字符的正則表達(dá)式:[\\u4e00-\\u9fa5]
評(píng)注:匹配中文還真是個(gè)頭疼的事,有了這個(gè)表達(dá)式就好辦了
匹配雙字節(jié)字符 (包括漢字在內(nèi)):[^\\x00-\\xff]
評(píng)注:可以用來(lái)計(jì)算字符串的長(zhǎng)度(一個(gè)雙字節(jié)字符長(zhǎng)度計(jì) 2,ASCII 字符計(jì) 1)
匹配空白行的正則表達(dá)式:\\n\\s*\\r
評(píng)注:可以用來(lái)刪除空白行
匹配 HTML 標(biāo)記的正則表達(dá)式:(\\s*?)[^]* .*?| .*?
評(píng)注:網(wǎng)上流傳的版本太糟糕,上面這個(gè)也僅僅能匹配部分,對(duì)于復(fù)雜的嵌套標(biāo)記依舊無(wú)能為力
匹配首尾空白字符的正則表達(dá)式:^\\s*|\\s*$
評(píng)注:可以用來(lái)刪除行首行尾的空白字符(包括空格、制表符、換頁(yè)符等等),非常有用的表達(dá)式
匹配 Email 地址的正則表達(dá)式:\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*
評(píng)注:表單驗(yàn)證時(shí)很實(shí)用
匹配網(wǎng)址 URL 的正則表達(dá)式:[a-zA-z]+://[^\\s]*
評(píng)注:網(wǎng)上流傳的版本功能很有限,上面這個(gè)基本可以滿足需求
匹配帳號(hào)是否合法 (字母開(kāi)頭,允許 5 -16 字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
評(píng)注:表單驗(yàn)證時(shí)很實(shí)用
匹配國(guó)內(nèi)電話號(hào)碼:\\d{3}-\\d{8}|\\d{4}-\\d{7}
評(píng)注:匹配形式如 0511-4405222 或 021-87888822
匹配騰訊 QQ 號(hào):[1-9][0-9]{4,}
評(píng)注:騰訊 QQ 號(hào)從 10000 開(kāi)始
匹配中國(guó)大陸郵政編碼:[1-9]\\d{5}(?!\\d)
評(píng)注:中國(guó)大陸郵政編碼為 6 位數(shù)字
匹配×××:\\d{15}|\\d{18}
評(píng)注:中國(guó)大陸的×××為 15 位或 18 位
匹配 ip 地址:\\d+\\.\\d+\\.\\d+\\.\\d+
評(píng)注:提取 ip 地址時(shí)有用
匹配特定數(shù)字:
^[1-9]\\d*$ // 匹配正整數(shù)
^-[1-9]\\d*$ // 匹配負(fù)整數(shù)
^-?[1-9]\\d*$ // 匹配整數(shù)
^[1-9]\\d*|0$ // 匹配非負(fù)整數(shù)(正整數(shù) + 0)
^-[1-9]\\d*|0$ // 匹配非正整數(shù)(負(fù)整數(shù) + 0)
^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*$ // 匹配正浮點(diǎn)數(shù)
^-([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*)$ // 匹配負(fù)浮點(diǎn)數(shù)
^-?([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0)$ // 匹配浮點(diǎn)數(shù)
^[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+|0$ // 匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)
^(-([1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*))|0?\\.0+|0$ // 匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)
評(píng)注:處理大量數(shù)據(jù)時(shí)有用,具體應(yīng)用時(shí)注意修正
匹配特定字符串:
^[A-Za-z]+$ // 匹配由 26 個(gè)英文字母組成的字符串
^[A-Z]+$ // 匹配由 26 個(gè)英文字母的大寫(xiě)組成的字符串
^[a-z]+$ // 匹配由 26 個(gè)英文字母的小寫(xiě)組成的字符串
^[A-Za-z0-9]+$ // 匹配由數(shù)字和 26 個(gè)英文字母組成的字符串
^\\w+$ // 匹配由數(shù)字、26 個(gè)英文字母或者下劃線組成的字符串
感謝各位的閱讀!關(guān)于“Oracle 正則表達(dá)式怎么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!