How can I access groups from a regex exec match in Typescript?
我在试的时候得到了EDOCX1[0]
1 2 3 4 5 6
| const r = /\w+, (?<foo>\w+)/
const m = r.exec('hello, world')
if (m) {
const groups = m.groups
} |
Javascript可以在regex exec结果上调用.groups。我知道输出实际上是一个数组…但是,获取一个特定的索引来获取这些组似乎有点麻烦。从列表中提取是typescript中唯一的选项吗?
- 你试过了吗:M[1]?
- 嗯,忘记了数组的顺序…在这种情况下应该是正确的。但是如果你想访问键值版本SeffsBad
- 这被错误地标记为相关JS问题的副本。RegExpExecArray缺少TS中groups属性的类型定义。
- @基思是对的。我知道"groups"属性是可选的,不加在RegExpMatchArray中是可以理解的,但是因为它是Array的,如果我使用m["groups"]ts会产生错误Element implicitly has an 'any' type because index expression is not of type 'number'.,如果我使用m.groups,那么我得到Property 'groups' does not exist on type 'RegExpMatchArray'.。
- 显然,它已经在typescript 2.8(github.com/microsoft/typescript/issues/22082)中报告并修复。
M[1]将带来"世界"。
您可以以m[组]的形式访问组。
1 2 3
| if (m) {
const groups = m['groups'];
} |
因为如果在m处可以看到console.log/debug,那么groups就是结果中的一个对象。如果您知道属性名,上面提到的是访问对象的更具体的方法。