【问题标题】:Get the number between two characters - Typescript [duplicate]获取两个字符之间的数字-Typescript [重复]
【发布时间】:2020-11-25 01:50:49
【问题描述】:

我是 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);

这给出了一个空白响应。

【问题讨论】:

  • 这能回答你的问题吗? RegExp in TypeScript 或:Regex Match value in Typescript
  • @AhmedAbdelhameed 他们没有帮助。我已经更新了 OP。
  • let regxp = /(?&lt;=C)\d{10}(?=\w)/;
  • 您的回复是空白的,因为当您不使用 /.../ 格式时,您的正则表达式中的反斜杠需要转义:let regxp = new RegExp('(?&lt;=C)(\\d{10})(?=\\w)');

标签: regex typescript google-cloud-functions


【解决方案1】:

有两个问题,您从未将返回的字符串解析为带有parseInt 的数字,并且并不总是支持(?&lt;=C)(正向后视)。

其次,您的正则表达式可以简化为^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

Playground

【讨论】:

  • 通过一些小的改动,我可以让它适用于我的案例。谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2015-10-09
  • 2012-06-12
  • 2014-07-18
  • 2012-12-28
  • 2018-11-16
相关资源
最近更新 更多