首頁 web前端 js教程 正規怎麼寫才能匹配一組字符

正規怎麼寫才能匹配一組字符

Mar 30, 2018 am 09:51 AM
匹配 天賦

這次帶給大家正規怎麼寫才能匹配一組字符,正則匹配一組字符的注意事項有哪些,下面就是實戰案例,一起來看一下。

本文實例講述了正規表示式教程之匹配一組字元的方法。分享給大家供大家參考,具體如下:

註:在所有例子中正規表示式匹配結果包含在源文本中的之間,有的例子會使用Java來實現,如果是java本身正規表示式的用法,會在對應的地方說明。所有java例子都在JDK1.6.0_13下測試通過。

一、匹配多個字元中的某一個

在上一篇《正規表示式教程之匹配單一字元詳解》中的一個匹配以na或sa開頭的文字檔案範例中,使用的正規表示式是.a.\.txt。如果還有一個檔案是cal.txt,那麼也會被配對到。如果只想要匹配na或sa開頭的文件,該怎麼辦?

既然只想找出n或s,使用可以匹配任何字元的.顯然是不行的。在正規表示式中,我們可以使用[和]來定義一個字元集合,在使用[和]來定義的字元集合裡,這兩個元字元之間的所有字元都是該集合的組成部分,字元集合的匹配結果是能夠與該集合裡的任何一個成員相符的的文字。

來看一個和上一個相似一個範例:

文字:

#sales.txt

##na1 .txt

na2.txt

sa1.txt

sanatxt.txt

##cal.txt

正規表示式:

[ns]a.\.txt

結果:

sales.txt

【na1.txt】

【na2.txt】

【sa1.txt】

sanatxt.txt

#cal.txt

分析:這裡使用的正規表示式是以[na]開頭,這個集合將匹配字元n或s,不會匹配其他任何字元。 [和]不匹配任何字符,它們只負責定義一個字符集合。接下來a符合一個字元a,\.將符合一個.字元本身,txt符合txt字元本身,符合結果與我們預期的一致。

但是,如果檔案中如果有一個檔案是usa1.txt,那麼它也會被配對出來。這是位置匹配的問題,在後面將會討論到。

二、使用字元集合區間

在上面的範例中,如果我們只想匹配以na或sa開頭,後面跟一個數字的檔案怎麼辦?正規表示式[ns]a.\.txt中,.將會匹配到任一個字符,包括數字。這個問題可以使用字元集合來解決:

sales.txt

na1.txt

##na2. txt

sa1.txt

san.txt

sanatxt.txt

cal.txt

正規表示式:

[ns]a[0123456789]\.txt

結果:

sales.txt

【na1.txt】

【na2.txt】

【sa1.txt】

san.txt

#

sanatxt.txt

cal.txt

分析:從結果可以看到,我們只匹配出來以na或sa開頭,後面跟一個數字的文件,而san.txt沒有被匹配出來,因為使用了字元集合[0123456789]來限定第三個字元只能是數字。

在正規表示式中,會很頻繁的使用到一些字元區間,例如0-9,a-z等等,為了簡化字元區間的定義,正規表示式提供了一個特殊的元字元-來定義字元區間。像上面這個例子,我們可以使用正規表示式來匹配:[ns]a[0-9]\.txt,結果與上面完全一樣。

字元區間不限於數字,像下面這些都是合法的字元區間:

[A-F]:符合從A到F的所有大寫字母。

[A-Z]:符合從A到Z的所有大寫字母。

[A-z]:符合從ASCII字元A到ASCII字元z的所有字母。但這個區間一般不會用到,只是舉例說明。因為它們之間還包含著[和^等在ASCII中排列在Z和a之間的字元。

字元區間的首尾字元可以是ASCII字元清單中的任意字元。但在實際使用中,最常用的還是數字和字母字元區間。

注意:在定義字元區間的時候,不能讓區間的尾字小於首字(如[9-0]),這是不允許的。 -作為元字符只能出現在[和]之間,如果在[和]之外的任何地方,它只是一個普通的字符,只會與-本身匹配。

在同一個字元集合中可以給出多個字元區間,例如:[0-9a-zA-Z]將匹配任一個大小寫字母和數字。

來看一下符合網頁中顏色的範例:

文字:

<span style="background-color:#3636FF;height:30px; width:60px;">测试</span>
登入後複製

#正規表示式:#[0-9A-Fa-f] [0 -9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f]

#結果:【#3636FF】;height:30px; width:60px;">測試

#分析:在網頁中,顏色一般表示為一個以#開頭的RGB值,R代表紅色,G代表綠色,B代表藍色,任何一種顏色都可以透過RGB的不同組合調和出來。 RGB值以16進值表示,如#000000代表白色,#FFFFFF代表黑色,#FF0000代表紅色。所以網頁中匹配顏色的正規表示式是以#開頭,後面跟6個相同的[0-9A-Fa-f]字元集合(這可以簡單寫成#[0-9A-Fa-f]{6},會在後面的重複配對中討論到)。

三、取非匹配

字符集合通常用來指定一組必須匹配其中之一的字符,但在某些場合,我們需要反過來做,給出一組不需要得到的字符,換句話說,除了在那個字符集合中的字符,其他的任意字符都可以匹配。

例如,要符合以na或sa開頭,後面跟著的不是數字的檔案:

文字:

sales.txt

#na1.txt

na2.txt

#sa1.txt

# #sanatxt.txt

san.txt

正規表示式:

[ns]a[^0-9]\.txt

結果:

sales.txt

na1.txt

##na2. txt

sa1.txt

sanatxt.txt

【san.txt】

分析:這個例子使用的模式正好與前面的相反,前面[0-9]只匹配數字,而這裡[^0-9]匹配的是非數字。

注意:^在[和]之間表示取非,如果出現在正規表示式的開頭,表示位置匹配匹配了,這將在後面討論到。同時,^的效果將作用於給定字元集合裡的所有字元或字元區間,而不僅限於緊跟在^字元後面的那一個字元或字元區間。如[^0-9a-z]表示不符合任何數字或小寫字母。

四、小結

元字元[和]用於定義一個字元集合,其意義是必須與該集合裡的字元之一相符。定義一個字元集合的方法有兩種:一是把所有的字元都列舉出來;二是利用元字元-以字元區間的方式給出。字符集合可以使用元字符^來取非,這將把給定的字符集合強行排除在匹配操作外,除了該字符集合裡的字符,其他字符都可以匹配。

在接下來的文章中,我們將會討論正規表示式中的一些元字元的使用。

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

JS的密碼強度校驗正規表示式(附程式碼)

在JQ中正規表示驗證不能含有中文的方法

#

以上是正規怎麼寫才能匹配一組字符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go語言正規表示式實踐指南:如何匹配十六進位顏色代碼 Go語言正規表示式實踐指南:如何匹配十六進位顏色代碼 Jul 13, 2023 am 10:46 AM

Go語言正規表示式實踐指南:如何匹配十六進位顏色代碼引言:正規表示式是一種強大且靈活的工具,用於字串的模式匹配和查找。在Go語言中,我們可以使用內建的正規表示式套件regexp來實作這些操作。本文將介紹如何使用正規表示式在Go語言中匹配十六進位顏色代碼。導入正規表示式套件首先,我們需要導入Go語言的正規表示式套件regexp。可以在程式碼的開頭加入以下導入語句:i

PHP正規表示式實戰:匹配字母和數字 PHP正規表示式實戰:匹配字母和數字 Jun 22, 2023 pm 04:49 PM

PHP正規表示式實戰:匹配字母和數字正規表示式是一種用來匹配字串的工具,可以方便地實現字串的搜尋、替換、分割等操作。在PHP開發中,正規表示式也是非常有用的工具。本文將介紹如何使用PHP正規表示式來搭配字母和數字。匹配單一字符要匹配單個字符,可以使用正則表達式中的字符類。字符類別用方括號[]表示,其中的字符表示可以被匹配的字符,可以使用連字符-表示範圍

PHP字串比對技巧:避免模糊包含表達式 PHP字串比對技巧:避免模糊包含表達式 Feb 29, 2024 am 08:06 AM

PHP字串比對技巧:避免模糊包含表達式在PHP開發中,字串比對是常見的任務,通常用於尋找特定的文字內容或驗證輸入的格式。然而,有時候我們需要避免使用模糊的包含表達式來確保匹配的準確性。本文將介紹一些在PHP中進行字串匹配時避免模糊包含表達式的技巧,並提供具體的程式碼範例。使用preg_match()函數進行精確比對在PHP中,可以使用preg_mat

PHP正規表示式:精確匹配與排除模糊包含 PHP正規表示式:精確匹配與排除模糊包含 Feb 28, 2024 pm 01:03 PM

PHP正規表示式:精確匹配與排除模糊包含正規表示式是一種強大的文字匹配工具,能夠幫助程式設計師在處理文字時進行高效的搜尋、替換和篩選。在PHP中,正規表示式也被廣泛應用於字串處理和資料匹配。本文將重點介紹在PHP中如何進行精確配對和排除模糊包含的操作,同時結合具體的程式碼範例進行說明。精確匹配精確匹配意味著只匹配符合完全條件的字串,不匹配任何變種或包含額外字

絕地潛兵2怎麼匹配 絕地潛兵2怎麼匹配 Feb 27, 2024 pm 08:43 PM

絕地潛兵2是一款擁有高品質大作玩法打造的第三人稱的射擊遊戲,擁有大量精彩的玩法可讓小夥伴去探索聯機射擊戰鬥的操作趣味,遊戲中的聯機模式是可以匹配的,一些玩家目前還不清楚該如何去操作匹配,本期為大家分享匹配的步驟!絕地潛兵2匹配操作教程答:在星球界面點擊快速匹配。絕地潛兵2配對方法絕地潛兵2的快速配對是一個很不錯的功能,能幫玩家找到一起配對的隊友,共同進入一場任務,互相配合獲得更高的任務評價。匹配的選項在星球介面,在找任務或看公開房間的時候,下方會有一個快速匹配,點擊就能開始匹配。如果玩家打開了跨平

PHP 正規表示式:如何符合 HTML 中的所有 textarea 標籤 PHP 正規表示式:如何符合 HTML 中的所有 textarea 標籤 Jun 22, 2023 pm 09:27 PM

HTML是一種常用的頁面標記語言,用於在網頁中展示內容。在HTML中,textarea標籤被用來建立文字框,允許使用者輸入或編輯文字。當你需要從頁面中提取所有的textarea標籤及其內容時,PHP正規表示式可以提供一個簡單有效的解決方案。在本文中,我們將學習如何使用PHP正規表示式來匹配HTML中的所有textarea標籤。理解正規表

Java中的型別不符-java.lang.ClassCastException Java中的型別不符-java.lang.ClassCastException Jun 24, 2023 pm 09:30 PM

Java作為一門強型別語言,在編譯時就要求變數的型別必須明確確定下來,這在某種程度上保證了程式的安全性。但是有時候,在運行時,我們可能會遇到類型轉換異常——java.lang.ClassCastException,這種異常會在Java程式中出現,當程式試圖將一個物件轉換為不相容的類型時,就會拋出該異常。 Java.lang.ClassCastExcepti

如何在 PHP 中使用正規表示式來匹配多個連續的特定字符 如何在 PHP 中使用正規表示式來匹配多個連續的特定字符 Jun 22, 2023 pm 08:15 PM

正規表示式是一種強大的文字處理工具,它在PHP中有著廣泛的應用。其中一個常見的用法是匹配多個連續的特定字符,例如匹配多個連續的空格、多個連續的逗號等。本文將介紹如何在PHP中使用正規表示式來實現此功能。在PHP中,我們可以使用preg_match()函數來進行正規表示式的匹配。此函數需要傳入兩個參數:正規表示式和待匹配的字串。如果匹配成功

See all articles