# IsRegEx 指令碼與圖表函數

IsRegEx() 會傳回指定文字是否為有效的規則運算式。

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

語法：

IsRegEx (expr [, debug])

傳回的資料類型： 雙值

引數

| 引數 | 描述 |
| --- | --- |
| expr | 包含要計算的規則運算式的字串運算式。 |
| debug | 選用引數。如果為此引數指定了任何值，則運算式將傳回文字提示，概述如何修正無效的規則運算式。 |

函數範例

| 範例 | 結果 |
| --- | --- |
| `IsRegEx('[a-z]')` | 傳回 `-1` (true)。 |
| `IsRegEx(']0-1[', 1)` | 此範例傳回錯誤訊息，其中包含修正無效規則運算式 `]0-1[` 的提示。 |
| `IsRegEx('[a-z')` | 傳回 `0` (false)。由於未指定 debug 引數，因此不會顯示錯誤訊息。 |

## 何時使用 IsRegEx

您可以使用 IsRegEx() 來測試您所寫的規則運算式在 Qlik Sense 中是否有效。例如，您可以將一個表格載入到您的應用程式中，其中包含輸入文字以及作為 Regex 的文字有效性評估。

## 範例 1 – 將 Regex 的有效性載入到資料模型中

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

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

概述

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

載入指令碼包含：

* 欄位 `reg_exp` 包含輸入字串，這些字串可能是也可能不是有效的規則運算式。

* 兩個計算欄位用於檢查 `reg_exp` 中的每個值是否是有效的規則運算式：

  * `validity_no_hint`：如果 Regex 有效，則顯示 `-1` (true)；如果無效，則顯示 0 (false)。

  * `validity_with_hint`：如果 Regex 有效，則顯示 -1 (true)。如果 Regex 無效，則會自動產生概述輸入問題的錯誤訊息，且可能提供有助於修正問題的提示。

載入指令碼

```
[Expression Validity]:
	Load
		*,
		IsRegEx(reg_exp) as validity_no_hint,
		IsRegEx(reg_exp,1) as validity_with_hint
		;
Load
*
Inline
`
reg_exp
[a-z]+
([a-z)(0-9)+
abcdefg|[0-7
\$|¢(0-9)
`;
```

結果

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

* `
  reg_exp`

* `validity_no_hint`

* `validity_with_hint`

結果表格

| reg\_exp | validity\_no\_hint | validity\_with\_hint |
| --- | --- | --- |
| ([a-z)(0-9)+ | 0 | -1 |
| [a-z]+ | -1 | 提示文字 (自動產生) |
| \$\|¢(0-9) | -1 | 提示文字 (自動產生) |
| abcdefg\|[0-7 | 0 | -1 |

## 範例 2 – 僅將有效的 Regex 載入到資料模型中

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

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

概述

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

載入指令碼包含：

* 欄位 `reg_exp` 包含輸入字串，這些字串可能是也可能不是有效的規則運算式。此欄位包含在名為 `Regular Expressions` 的表格中。

* 僅當輸入是有效的規則運算式時才將記錄載入到資料模型中的 where 子句。

載入指令碼

```
[Regular Expressions]:

Load
*
Inline
`
reg_exp
[a-z]+
([a-z)(0-9)+
abcdefg|[0-7
\$|¢(0-9)
`
WHERE
IsRegEx(reg_exp)=True()
;
```

結果

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

* `
  reg_exp`

結果表格

| reg\_exp |
| --- |
| [a-z]+ |
| \$\|¢(0-9) |

`[a-z]+` 和 `\$|¢(0-9)` 是有效的規則運算式，因此它們已載入到資料模型中。`([a-z)(0-9)+` 和 `abcdefg|[0-7` 不是有效的規則運算式，因此不會載入到資料模型中。

## 範例 3 - 圖表運算式

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

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

概述

在此範例中，我們將一組輸入字串載入到資料模型中，並將這些字串其以及評估 Regex 有效性的兩個計算維度新增至表格。兩個計算維度以不同的方式傳達相同的資訊。

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

載入指令碼包含一個欄位 `reg_exp`，其中包含的輸入字串可能是也可能不是有效的規則運算式。此欄位包含在名為 `Regular Expressions` 的表格中。

載入指令碼

```
[Regular Expressions]:

Load
*
Inline
`
reg_exp
[a-z]+
([a-z)(0-9)+
abcdefg|[0-7
\$|¢(0-9)
`;
```

結果

請執行下列動作：

1. 載入資料並開啟工作表。建立新的表格。新增 `reg_exp` 作為維度。

2. 接下來，新增下列計算維度：

   `=IsRegEx(reg_exp)`

   這是一個基本圖表運算式，如果輸入是有效的規則運算式，則顯示 `-1` (true)，如果不是有效的規則運算式，則顯示 `0` (false)。

3. 新增另一個計算維度：

   `=if(IsRegEx(reg_exp), 'Valid regex', 'Invalid regex')`

   這是一個條件運算式，可提供有關輸入有效性的更多詳細資訊。

結果表格

| reg\_exp | =IsRegEx(reg\_exp) | =if(IsRegEx(reg\_exp), 'Valid regex', 'Invalid regex') |
| --- | --- | --- |
| ([a-z)(0-9)+ | 0 | Invalid regex |
| [a-z]+ | -1 | Valid regex |
| \$\|¢(0-9) | -1 | Valid regex |
| abcdefg\|[0-7 | 0 | Invalid regex |

## 瞭解更多資訊

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