# MatchRegEx - 指令碼與圖表函數

MatchRegEx() 會將輸入字串與一或多個指定的規則運算式模式進行比較，並傳回相符的規則運算式模式的數字位置。如果未找到相符項，則該函數將傳回 0。此函數僅尋找完全相符項。

此函數執行區分大小寫的 Regex 操作。您也可以使用變體 MatchRegExI() 來執行不區分大小寫的 Regex 操作。

語法：

MatchRegEx (text, regex1 [ , regex2,...regexN])

傳回的資料類型： 整數

引數

| 引數 | 描述 |
| --- | --- |
| text | 要與其比對一個或多個規則運算式的輸入字串文字。 |
| regex | 嘗試與輸入字串比對的規則運算式。您可以在單一表達式中指定多個規則運算式，分隔作為後續引數。 |

函數範例

| 範例 | 結果 |
| --- | --- |
| `MatchRegEx('abc123','[a-z]','[0-9]','[a-z]+[0-9]+','.+')` | 傳回 `3`。第三個 Regex 模式是第一個與資料相符的。 |
| `MatchRegEx('ABC','[abc]+','[123]')` | 傳回 `0`，因為 MatchRegEx() 區分大小寫。 |
| `MatchRegExI('ABC','[abc]+','[123]')` | 傳回 `1`。使用不區分大小寫的函數變體 MatchRegExI()。 |

## 什麼情況下使用

此函數的使用案例包括：

* 驗證文字以滿足格式和合規性標準，並識別資料中的錯誤。

* 識別文字格式的差異。例如，您可以識別有多少電話號碼使用格式 A，有多少電話號碼使用格式 B，等等。

## 範例 1 – 用於分析電話號碼格式的載入指令碼

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/MatchRegEx.htm)

#### 載入指令碼和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 包含各企業聯絡電話號碼的表格 `BusinessContactInfo`。電話號碼是 10 位 NANP 電話號碼。

* 計算欄位 `PhoneNumberFormat`，用於評估每個電話號碼是否與一組特定的電話號碼格式相符。

我們要檢查三種不同的格式：(###) ###-####、###-###-#### 和 ##########。

載入指令碼

```
BusinessContactInfo:

Load MatchRegEx(ContactInfo,'\({0,1}[0-9]{3}\) [0-9]{3}-[0-9]{4}', '[0-9]{3}-[0-9]{3}-[0-9]{4}', '[0-9]{10}') as PhoneNumberFormat,
* Inline `
ID	CompanyName	ContactInfo
1	Company A	(123) 456-7890
2	Company B	0123456790
3	Company C	234-567-8901
4	Company D	(024) 680-2456
5	Company E	(135) 791-3579
6	Company F	8901234567
7	Company G	235-235-2352
8	Company H	(555) (555) (5555)
9	Company I	2342342343
10	Company J	444-444-4444
` (delimiter is '\t');
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `CompanyName`

* `ContactInfo`

* `PhoneNumberFormat`

結果表格

| CompanyName | ContactInfo | PhoneNumberFormat |
| --- | --- | --- |
| Company A | (123) 456-7890 | 1 |
| Company B | 0123456790 | 3 |
| Company C | 234-567-8901 | 2 |
| Company D | (024) 680-2456 | 1 |
| Company E | (135) 791-3579 | 1 |
| Company F | 8901234567 | 3 |
| Company G | 235-235-2352 | 2 |
| Company H | (555) (555) (5555) | 0 |
| Company I | 2342342343 | 3 |
| Company J | 444-444-4444 | 2 |

例如，您可以從這裡建立 KPI 來計算每種電話號碼格式的總數，以及不具有可辨識格式的電話號碼數量：

用於計算每種格式出現次數的彙總運算式範例

| 格式 | 執行個體數 | 圖表運算式 |
| --- | --- | --- |
| (###) ###-#### | 3 | =Count({&lt;PhoneNumberFormat={'1'}&gt;} PhoneNumberFormat) |
| ###-###-#### | 3 | =Count({&lt;PhoneNumberFormat={'2'}&gt;} PhoneNumberFormat) |
| ########## | 3 | =Count({&lt;PhoneNumberFormat={'3'}&gt;} PhoneNumberFormat) |
| Unrecognized format | 1 | =Count({&lt;PhoneNumberFormat={'0'}&gt;} PhoneNumberFormat) |

## 範例 2 – 用於識別 ISBN 格式的圖表運算式

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/MatchRegEx.htm)

#### 圖表運算式和結果

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 列出各種書籍之 ISBN 代碼的表格 `Books`。

我們希望根據 Regex 模式中指定的語法，從這些資料中識別每個 ISBN 代碼是有效的 10 位還是 13 位代碼。

載入指令碼

```
Books:

Load * Inline [
Book
ISBN 123-3-1234-1234-0
ISBN 012-2-0123-0123-4
ISBN 000-1-0123-0123-2
ISBN 0-111-23456-7
ISBN 555-2-5555-5555-3
ISBN 222-4-2222-2222-2
ISBN 1-901-23456-8
ISBN 333-3-3333-3333-3
ISBN 555-1-5151-5151-3
ISBN 232-1-2323-2323-1
ISBN 2-444-44444-4
ISBN 888-0-9999-0000-0
];
```

結果

載入資料並開啟工作表。建立新的表格並將此欄位新增為維度：

* `Book`

新增這個計算維度，並為其提供標籤 ISBN Format：

```
=if(MatchRegEx(Book, 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})', 'ISBN[ ]*([0-9]{1})-([0-9]{3})-([0-9]{5})-([0-9]{1})')=1, '13-digit', 
	if(MatchRegEx(Book, 'ISBN[ ]*([0-9]{3})-([0-9]{1})-([0-9]{4})-([0-9]{4})-([0-9]{1})', 'ISBN[ ]*([0-9]{1})-([0-9]{3})-([0-9]{5})-([0-9]{1})')=2, '10-digit',
		'Invalid ISBN'))
```

結果表格

| Book | ISBN Format |
| --- | --- |
| ISBN 000-1-0123-0123-2 | 13-digit |
| ISBN 0-111-23456-7 | 10-digit |
| ISBN 1-901-23456-8 | 10-digit |
| ISBN 2-444-44444-4 | 10-digit |
| ISBN 012-2-0123-0123-4 | 13-digit |
| ISBN 123-3-1234-1234-0 | 13-digit |
| ISBN 222-4-2222-2222-2 | 13-digit |
| ISBN 232-1-2323-2323-1 | 13-digit |
| ISBN 333-3-3333-3333-3 | 13-digit |
| ISBN 555-1-5151-5151-3 | 13-digit |
| ISBN 555-2-5555-5555-3 | 13-digit |
| ISBN 888-0-9999-0000-0 | 13-digit |

## 瞭解更多資訊

* [在載入指令碼和圖表運算式中使用規則運算式](https://help.qlik.com/zh-TW/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)