我想在 RegExp 中使用方法“exec”。我写下面的代码来尝试做:
let result = <RegExpExecArray>{};
while (result = expressionCheck.exec(text)) {
let matchIndex = result.index;
let t = result[0].length;
matchRanges.push(new RegRange(matchIndex, t));
}
Run Code Online (Sandbox Code Playgroud)
但它会引发以下错误:
Build:Type 'RegExpExecArray | null' is not assignable to type 'RegExpExecArray'.
Run Code Online (Sandbox Code Playgroud)
我尝试将循环条件修改为:
while ((result = expressionCheck.exec(text)) != null) {
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用。那么这种情况下的循环条件怎么写呢?
你需要这样写:
let result;
while ((result = expression.exec(text)) !== null) {
let matchIndex = result.index;
let t = result[0].length;
matchRanges.push(new RegRange(matchIndex, t));
}
Run Code Online (Sandbox Code Playgroud)
为什么原始代码不起作用:声明result为类型的原始代码RegExpExecArray。这种类型与返回类型的兼容exec是RegExpExecArray | null。尽管缩小, via !== null,代码仍将分配null给result。这就是为什么它是一个错误。
您也可以按以下方式编写它。
for (let result = expression.exec(text); result !== null; result = expression.exec(text)) {
const matchIndex = result.index;
const t = result[0].length;
matchRanges.push(new RegRange(matchIndex, t));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7316 次 |
| 最近记录: |