正則表達式是形成模式的字符序列,主要用於搜索和替換。創建模式的目的是匹配特定的字符串,以便開發人員可以根據條件提取字符並替換某些字符。
RegExp Object
RegExp對象幫助開發人員匹配字符串的模式,屬性和方法幫助我們輕鬆地使用正則表達式。它類似於JavaScript中的RegExp
Properties
Pattern−Pattern方法表示用於定義正則表達式的字符串,應在使用正則表達式對象之前對其進行設置。
IgnoreCase−一個布爾屬性,表示是否應針對字符串中的所有可能匹配項(如果爲true或false)測試正則表達式。如果未顯式指定,則IgnoreCase值設置爲False。
Global−一個布爾屬性,表示是否應針對字符串中的所有可能匹配項測試正則表達式。如果未顯式指定,則將全局值設置爲False。
Methods
Test(search string)−如果正則表達式能夠成功地與字符串匹配,則測試方法以字符串作爲參數並返回True,否則返回False。
Replace(search string,Replace string)−Replace方法接受2個參數。如果搜索成功,它將用替換字符串替換該匹配項,並返回新字符串。如果沒有匹配項,則返回原始搜索字符串。
Execute(搜索字符串)−Execute方法的工作方式與Replace類似,只是它返回一個Matches集合對象,其中包含每個成功匹配的Match對象。它不會修改原始字符串。
Matches Collection Object
Matches集合對象作爲Execute方法的結果返回。此集合對象可以包含零個或多個匹配對象,並且此對象的屬性是只讀的。
Count−Count方法表示集合中匹配對象的數目。
Item方法允許從matches collections對象訪問match對象。
Match Object
Match對象包含在matches集合對象中。這些對象表示搜索字符串後的成功匹配。
FirstIndex−它表示原始字符串中發生匹配的位置。此索引是基於零的,這意味著字符串中的第一個位置是0。
長度−表示匹配字符串總長度的值。
值−表示匹配值或文本的值。它也是訪問匹配對象時的默認值。
All about Pattern Parameter
模式構建與PERL類似。在使用正則表達式時,模式構建是最重要的。在本節中,我們將討論如何基於各種因素創建模式。
Position Matching
位置匹配的意義在於確保正則表達式放置在正確的位置。
Symbol | Description |
---|---|
^ | Matches only the beginning of a string. |
$ | Match only the end of a string. |
\b | Matches any word boundary |
\B | Matches any non-word boundary |
Literals Matching
任何形式的字符,如字母表、數字或特殊字符,甚至十進位、十六進位都可以視爲文字。由於很少有字符在正則表達式的上下文中具有特殊意義,我們需要使用轉義序列對其進行轉義。
Symbol | Description |
---|---|
Alphanumeric | Matches alphabetical and numerical characters only. |
\n | Matches a new line. |
\[ | Matches [ literal only |
\] | Matches ] literal only |
\( | Matches ( literal only |
\) | Matches ) literal only |
\t | Matches horizontal tab |
\v | Matches vertical tab |
\| | Matches | literal only |
\{ | Matches { literal only |
\} | Matches } literal only |
\\ | Matches \ literal only |
\? | Matches ? literal only |
\* | Matches * literal only |
\+ | Matches + literal only |
\. | Matches . literal only |
\b | Matches any word boundary |
\B | Matches any non-word boundary |
\f | Matches a form feed |
\r | Matches carriage return |
\xxx | Matches the ASCII character of an octal number xxx. |
\xdd | Matches the ASCII character of an hexadecimal number dd. |
\uxxxx | Matches the ASCII character of an UNICODE literal xxxx. |
Character Classes Matching
字符類是由自定義分組形成的模式,包含在[]大括號中。如果我們期望一個不應該在列表中的字符類,那麼我們應該使用負號忽略這個特定的字符類,這是一個大寫^。
Symbol | Description |
---|---|
[xyz] | Match any of the character class enclosed within the character set. |
[^xyz] | Matches any of the character class that are NOT enclosed within the character set. |
. | Matches any character class except \n |
\w | Match any word character class. Equivalent to [a-zA-Z_0-9] |
\W | Match any non-word character class. Equivalent to [^a-zA-Z_0-9] |
\d | Match any digit class. Equivalent to [0-9]. |
\D | Match any non-digit character class. Equivalent to [^0-9]. |
\s | Match any space character class. Equivalent to [ \t\r\n\v\f] |
\S | Match any space character class. Equivalent to [^\t\r\n\v\f] |
Repetition Matching
重複匹配允許在正則表達式中進行多個搜索。它還指定元素在正則表達式中重複的次數。
Symbol | Description |
---|---|
* | Matches zero or more occurrences of the given regular Expression. Equivalent to {0,}. |
+ | Matches one or more occurrences of the given regular Expression. Equivalent to {1,}. |
? | Matches zero or one occurrences of the given regular Expression. Equivalent to {0,1}. |
{x} | Matches exactly x number of occurrences of the given regular expression. |
{x,} | Match atleast x or more occurrences of the given regular expression. |
{x,y} | Matches x to y number of occurences of the given regular expression. |
Alternation & Grouping
交替和分組有助於開發人員創建更複雜的正則表達式,特別是在正則表達式中處理複雜的子句,這給了很大的靈活性和控制能力。
Symbol | Description |
---|---|
0 | Grouping a clause to create a clause. "(xy)?(z)" matches "xyz" or "z". |
| | Alternation combines one regular expression clause and then matches any of the individual clauses. "(ij)|(23)|(pq)" matches "ij" or "23" or "pq". |
Building Regular Expressions
下面給出幾個示例,它們清楚地解釋了如何構建正則表達式。
Regular Expression | Description |
---|---|
"^\s*.." and "..\s*$" | Represents that there can be any number of leading and trailing space characters in a single line. |
"((\$\s?)|(#\s?))?" | Represents an optional $ or # sign followed by an optional space. |
"((\d+(\.(\d\d)?)?))" | Represents that at least one digit is present followed by an optional decimals and two digits after decimals. |
Example
下面的示例檢查用戶是否輸入了一個電子郵件id,其格式應匹配,以便有一個電子郵件id後跟「@」,然後後跟域名。