首页 > 解决方案 > 获取两个字符之间的数字 - 打字稿

问题描述

我是 Typescript 的新手,并试图在我的 Google Cloud Functions 中创建一个 webhook。

我有一个字符串:C1234567890A460450P10TS1596575969702

我想使用正则表达式1234567890从该字符串中提取数字。第一个字符C是固定不变的,A数字后面的字符是可变的,可以是任何其他字母。

与数字匹配的正则表达式是(?<=C)(\d{10})(?=\w).

我想知道如何在 Typescript 中执行这个正则表达式,以便我可以将数字放入变量中(例如const number = [the number extracted from the string] //value 1234567890:)

编辑1

根据提供的建议(在发布此问题之前我已经尝试过),这是我可以从中得出的代码:

const string = request.body.string;

let regxp = new RegExp('(?<=C)(\d{10})(?=\w)');
const number = regxp.exec(string);

response.send(number);

这给出了空白响应。

标签: regextypescriptgoogle-cloud-functions

解决方案


有两个问题,你从来没有将返回的字符串解析为一个数字,parseInt并且(?<=C)并不总是支持 (positive lookbehind)。

其次,您的正则表达式可以简化为^C\d{10}.splice(1)删除C.

const string: string = request.body.string;


const matches = s.match(/^C\d{10}/);
let number: number;
if(matches !== null) {
    number = parseInt(matches[0].slice(1));
} else {
    res.status(400).end(); // Assuming this is express
    return;
}

res.send(number); // 1234567890

操场


推荐阅读