搜尋
首頁web前端js教程正規表示式(語法篇)
正規表示式(語法篇)May 21, 2018 am 09:35 AM
正規則表達式文法

下面我就為大家帶來一篇正規表示式(語法篇推薦)。現在就分享給大家,也給大家做個參考。

正規表示式的建構摘要

建構比對 

字元

x 字元x
\\ 反斜線字元
\0n 帶有八進位值0 的字元n (0 \0nn 帶有八進位值0 的字元nn (0 \0mnn 帶有八進位值0 的字元mnn(0 \xhh 有十六進位值0x 的字元hh
\uhhhh 帶有十六進位值0x 的字元hhhh
\t 製表符('\u0009')
\n 新行(換行)符('\u000A ')
\r 回車符號('\u000D')
\f 換頁符號('\u000C')
\a 警報(bell) 符號('\u0007')
\ e 轉義符('\u001B')
\cx 對應於x 的控制符 

字元類別

[abc] a、b 或c(簡單類別)
[^abc] 任何字符,除了a、b 或c(否定)
[a-zA-Z] a 到z 或A 到Z,兩頭的字母包括在內(範圍)
[a-d[m-p]] a 到d 或m 到p:[a-dm-p](並集)
[a-z&&[def]] d、e 或f(交集)
[ a-z&&[^bc]] a 到z,除了b 和c:[ad-z](減)
[a-z&&[^m-p]] a 到z,而非m 到p:[a -lq-z](減去) 

預定義字元類別

. 任何字元(與行結束符號可能匹配也可能不匹配)
\ d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字元:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 單字字元:[a-zA-Z_0-9]
\W 非單字字元:[^\w] 

POSIX 字元類別(僅US- ASCII)
\p{Lower} 小寫字母字元:[a-z]
\p{Upper} 大寫字母字元:[A-Z]
\p{ASCII} 所有ASCII:[\x00-\x7F]
\p{Alpha} 字母字元:[\p{Lower}\p{Upper}]
\p{Digit} 十進位數:[0-9]
\p{Alnum} 字母數字字符:[\p{Alpha}\p{Digit}]
\p{Punct} 標點符號:!"#$%&'()* ,-./:;?@[\] ^_`{|}~
\p{Graph} 可見字元:[\p{Alnum}\p{Punct}]
\p{Print} 可列印字元:[\p{Graph}\x20 ]
\p{Blank} 空格或製表符:[ \t]
\p{Cntrl} 控製字元:[\x00-\x1F\x7F]
\p{XDigit} 十六進制數字:[0-9a-fA-F]
\p{Space} 空白字元:[ \t\n\x0B\f\r] 

java.lang.Character 類別(簡單的java 字元類型)
\p{javaLowerCase} 等效於java.lang.Character.isLowerCase()
\p{javaUpperCase} 等效於java.lang.Character.isUpperCase()
\p{ javaWhitespace} 等效於java.lang.Character.isMirrored() 

#Unicode 區塊和類別的類別

\p{InGreek} Greek 區塊(簡單區塊)中的字元
\p{Lu} 大寫字母(簡單類別)
\p{Sc} 貨幣符號
\P{InGreek} 所有字符,Greek 區塊中的除外(否定)
[\p{L}&&[^\p{Lu}]]  所有字母,大寫字母除外(減) 

邊界匹配器

^ 行的開頭

$ 行的結尾
\b 單字邊界
\B 非單字邊界
\A 輸入的開頭
\ G 上一個符合的結尾
\Z 輸入的結尾,只用於最後的結束符號(如果有的話)
\z 輸入的結尾 

Greedy 數量詞

X? X,一次或一次也沒有

X* X,零次或多次
X X,一次或多次
X{n} X,剛好n次
X{n,} X,至少n 次
X{n,m} X,至少n 次,但不超過m 次 

Reluctant 數量詞

X?? X,一次或一次也沒有

X*? X,零次或多次
X ? X,一次或多次
X{n}? X,剛好n 次
X{n,}? X,至少n 次
X{n,m}? X,至少n 次,但不超過m 次 

Possessive 數量詞

X? X,一次或一次也沒有

X* X,零次或多次
X X,一次或多次
X{n} X,剛好n 次
X{n,} X,至少n 次
X{n,m} X,至少n 次,但不超過m 次 

Logical 運算子

XY X 後面跟著Y

X|Y X 或Y
(X) X,作為捕獲組 

Back 引用

\n 任何匹配的nth 捕獲組

引用
\ Nothing,但是引用以下字符
\Q Nothing,但是引用所有字符,直到\E
\E Nothing,但是結束從\Q開始的引用 

特殊構造(非捕獲)

(?:X) X,作為非捕獲組
(?idmsux-idmsux)  Nothing,但是將匹配標誌i d m s u x on - off
(?idmsux-idmsux:X)   X,作為帶有給定標誌i d m s u x on - off
的非捕獲組  (?=X) X,通過零寬度的正lookahead
(?!X) X,通過零寬度的負lookahead
(?(?(?>X) X,作為獨立的非捕獲組

-------------------------------------------------

反斜線、轉義和引用

#反斜線字元('\') 用於引用轉義構造,如上表所定義的,同時也用於引用其他將被解釋為非轉義構造的字元。因此,表達式 \\ 與單一反斜線匹配,而 \{ 與左括號匹配。

在不表示轉義構造的任何字母字元前使用反斜線都是錯誤的;它們是為將來擴展正規表示式語言保留的。可以在非字母字元前使用反斜線,不管該字元是否非轉義構造的一部分。

根據 Java Language Specification 的要求,Java 原始碼的字串中的反斜線被解釋為 Unicode 轉義或其他字元轉義。因此必須在字串字面值中使用兩個反斜線,表示正規表示式受到保護,並且不被 Java 字節碼編譯器解釋。例如,當解釋為正規表示式時,字串字面值 "\b" 與單一退格字元匹配,而 "\\b" 與單字邊界匹配。字串字面值 "\(hello\)" 是非法的,將導致編譯時錯誤;要與字串 (hello) 匹配,必須使用字串字面值 "\\(hello\\)"。

字元類別

字元類別可以出現在其他字元類別中,並且可以包含並集運算子(隱含)和交集運算子 (&&)。並集運算子表示至少包含其某個運算元類別中所有字元的類別。交集運算子表示包含同時位於其兩個運算元類別中所有字元的類別。

字元類別運算子的優先權如下所示,依照從最高到最低的順序排列:

##1     字面值轉義     \x

2     分組[...]
3     範圍a-z
4     並集合[a-e][i-u]
5     交集[a-z&&[aeiou]]

,元字元的不同集合上位於字元類別的內部,而非字元類別的外部。例如,正規表示式 . 在字元類別內部就失去了其特殊意義,而表達式 - 變成了形成元字元的範圍。

行結束符號

行結束符號 是一個或兩個字元的序列,標記輸入字元序列的行結尾。以下程式碼被辨識為行結束符:

新行(換行)符('\n')、

後面緊跟著新行符的回車符("\r\n")、
單獨的回車符號('\r')、
下一行字元('\u0085')、
行分隔符號('\u2028') 或
段落分隔符號('\ u2029)。
如果啟動 UNIX_LINES 模式,則新行符是唯一識別的行結束符號。

如果未指定 DOTALL 標誌,則正規表示式 . 可以與任何字元(行結束符除外)相符。

預設情況下,正規表示式 ^ 和 $ 忽略行結束符,僅分別與整個輸入序列的開頭和結尾相符。如果啟動 MULTILINE 模式,則 ^ 在輸入的開頭和行結束符號之後(輸入的結尾)才發生符合。處於 MULTILINE 模式時,$ 僅在行結束符號之前或輸入序列的結尾處匹配。

群組與擷取

擷取群組可以透過從左到右計算其開括號來編號。例如,在表達式((A)(B(C))) 中,有四個這樣的群組:

#1     ((A)(B(C)))

2     \A
3     (B(C))
4     (C)

組零總是代表整個表達式。

之所以這樣命名捕獲組是因為在匹配中,保存了與這些組匹配的輸入序列的每個子序列。捕獲的子序列稍後可以透過 Back 引用在表達式中使用,也可以在匹配操作完成後從匹配器取得。

與群組關聯的擷取輸入始終是與群組最近匹配的子序列。如果由於量化的緣故再次計算了組,則在第二次計算失敗時將保留其先前捕獲的值(如果有的話)例如,將字串"aba" 與表達式(a(b)?) 相匹配,會將第二組設定為"b"。在每個匹配的開頭,所有捕獲的輸入都​​會被丟棄。

以 (?) 開頭的組是純的非捕獲 組,它不捕獲文本,也不針對組合計進行計數。

上面是我整理給大家的,希望今後對大家有幫助。

相關文章:

關於在JS中閉包可被利用的常見場景有哪幾種? (圖文教程)

js中如何複製一個物件? (圖文教學)

利用js實作留言板的範例(程式碼奉上)

以上是正規表示式(語法篇)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
如何快速把你的 Python 代码变为 API如何快速把你的 Python 代码变为 APIApr 14, 2023 pm 06:28 PM

提到API开发,你可能会想到DjangoRESTFramework,Flask,FastAPI,没错,它们完全可以用来编写API,不过,今天分享的这个框架可以让你更快把现有的函数转化为API,它就是Sanic。Sanic简介Sanic[1],是Python3.7+Web服务器和Web框架,旨在提高性能。它允许使用Python3.5中添加的async/await语法,这可以有效避免阻塞从而达到提升响应速度的目的。Sanic致力于提供一种简单且快速,集创建和启动于一体的方法

PHP8.0中新的类型别名语法PHP8.0中新的类型别名语法May 14, 2023 pm 02:21 PM

随着PHP8.0的发布,新增了一种类型别名语法,使得使用自定义的类型变得更加容易。在本文中,我们将深入了解这种新的语法,以及它对开发人员的影响。什么是类型别名?在PHP中,类型别名本质上是一个变量,它引用另一个类型的名称。这个变量可以像其他类型一样使用,并在代码中的任何地方声明。这种语法的主要作用是为常用的类型定义自定义别名,使得代码更加易于阅读和理解。

Go语言与JS的联系与区别Go语言与JS的联系与区别Mar 29, 2024 am 11:15 AM

Go语言与JS的联系与区别Go语言(也称为Golang)和JavaScript(JS)都是当前流行的编程语言,它们在某些方面有联系,在其他方面又有明显的区别。本篇文章将探讨Go语言与JavaScript之间的联系与区别,同时提供具体的代码示例来帮助读者更好地理解这两种编程语言。联系:都是跨平台的Go语言和JavaScript都是跨平台的,可以在不同的操作系统

PHP8.0中的父类调用语法PHP8.0中的父类调用语法May 14, 2023 pm 01:00 PM

PHP是一种广泛应用于Web开发的服务器端脚本语言,而PHP8.0版本中引入了一种新的父类调用语法,让面向对象编程更加方便和简洁。在PHP中,我们可以通过继承的方式创建一个父类和一个或多个子类。子类可以继承父类的属性和方法,并可以通过重写父类的方法来修改或扩展其功能。在普通的PHP继承中,如果我们想在子类中调用父类的方法,需要使用parent关键字来引用父

学会使用CSS选择器的基本语法学会使用CSS选择器的基本语法Jan 13, 2024 am 11:44 AM

掌握基本的CSS选择器语法,需要具体代码示例CSS选择器是前端开发中非常重要的一部分,它可以用来选择和修改HTML文档的各个元素。掌握基本的CSS选择器语法对于编写高效的样式表是至关重要的。本文将介绍一些常见的CSS选择器以及对应的代码示例。元素选择器元素选择器是最基本的选择器,可以通过元素的标签名来选择对应的元素。例如,要选择所有的段落(p元素),可以使用

如何解决Python的表达式语法错误?如何解决Python的表达式语法错误?Jun 24, 2023 pm 05:04 PM

Python作为一种高级编程语言,易于学习和使用。一旦需要编写Python程序时,无法避免地遇到语法错误,表达式语法错误是常见的一种。在本文中,我们将讨论如何解决Python的表达式语法错误。表达式语法错误是Python中最常见的错误之一,它通常是由于错误的使用语法或缺少必要组件而导致的。在Python中,表达式通常由数字、字符串、变量和运算符组成。最常见的

乘方运算在C语言中的用法及语法乘方运算在C语言中的用法及语法Feb 18, 2024 pm 04:05 PM

C语言中乘方运算的语法和用法简介:在C语言中,乘方运算(poweroperation)是一种常见的数学运算,它用于计算一个数的幂。在C语言中,我们可以使用标准库函数或者自定义函数来实现乘方运算。本文将详细介绍C语言中乘方运算的语法和用法,并提供具体的代码示例。一、使用math.h中的pow()函数在C语言中,math.h标准库中提供了pow()函数,用于执

PHP8.0中依赖注入的语法PHP8.0中依赖注入的语法May 14, 2023 am 08:07 AM

随着PHP技术的不断发展,PHP8.0带来了一系列的新特性和功能,其中依赖注入的使用方法也得到了进一步的创新和完善。本文将为大家介绍PHP8.0中依赖注入的语法,让您能够更好地掌握PHP技术的最新进展。什么是依赖注入先来简单介绍一下依赖注入是什么。依赖注入(DependencyInjection)是一种编程技术,它主要用于降低代码的耦合程

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

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

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具