# IsRegEx - 脚本和图表函数

IsRegEx() 返回指定文本是否为有效正则表达式。

该函数执行大小写敏感的正则表达式操作。您也可以用变种 IsRegExI() 来作为替代，执行不区分大小写的正则表达式操作。

语法：

IsRegEx (expr [, debug])

返回数据类型： 双

参数

| 参数 | 描述 |
| --- | --- |
| expr | 字符串表达式，包含要评估的正则表达式。 |
| debug | 可选参数。如果为该参数指定了任何值，表达式会返回一个文本提示，概述如何修复无效的正则表达式。 |

函数示例

| 示例 | 结果 |
| --- | --- |
| `IsRegEx('[a-z]')` | 返回 `-1` (true)。 |
| `IsRegEx(']0-1[', 1)` | 此示例返回一条错误信息，并提示更正无效的正则表达式`]0-1[`。 |
| `IsRegEx('[a-z')` | 返回 `0` (false)。由于未指定 debug 参数，因此不会显示错误信息。 |

## 适用场景

您可以使用 IsRegEx() 测试您编写的正则表达式在 Qlik Sense 中是否有效。例如，您可以在应用程序中加载一个输入文本的表格，并以正则表达式的形式评估文本的有效性。

## 例 1 - 将正则表达式的有效性加载到数据模型中

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

#### 加载脚本和结果

概览

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 一个字段，`reg_exp`，包含输入字符串，这些字符串可能是也可能不是有效的正则表达式。

* 两个已计算字段，用于检查 `reg_exp` 中的每个值是否是有效的正则表达式：

  * `validity_no_hint`：如果正则表达式有效，则显示 `-1`（true）；如果无效，则显示 0（false）。

  * `validity_with_hint`：如果正则表达式有效，则显示 -1 (true)。如果正则表达式无效，自动生成的错误信息会概述输入的问题，并提供可能的提示以帮助修复。

加载脚本

```
[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 - 仅将有效的正则表达式加载到数据模型中

[](https://help.qlik.com/en-US/sense/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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/IsRegEx.htm)

#### 图表表达式和结果

概览

在这个示例中，我们将一组输入字符串加载到数据模型集，并将它们添加到一个数据表中，同时还有两个计算维度，用于评估正则表达式的有效性。两个计算维度以不同的方式传递相同的信息。

打开 数据加载编辑器，并将以下加载脚本添加到新部分。

加载脚本包含一个字段，`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-CN/sense/May2025/Subsystems/Hub/Content/Sense_Hub/Scripting/regular-expressions-qlik-analytics.htm)