TypeScript 中的正则表达式

Posted

技术标签:

【中文标题】TypeScript 中的正则表达式【英文标题】:RegExp in TypeScript 【发布时间】:2013-05-14 23:04:31 【问题描述】:

如何在 TypeScript 中实现正则表达式?

我的例子:

var trigger = "2"
var regex = new RegExp('^[1-9]\d0,2$', trigger); // where I have exception in Chrome console

【问题讨论】:

【参考方案1】:

我认为你想在 TypeScript 中 test 你的 RegExp,所以你必须这样做:

var trigger = "2",
    regexp = new RegExp('^[1-9]\d0,2$'),
    test = regexp.test(trigger);
alert(test + ""); // will display true

您应该阅读MDN Reference - RegExp,RegExp 对象接受两个参数patternflags,它们可以为空(可以省略/未定义)。要测试您的正则表达式,您必须使用 .test() 方法,而不是在 RegExp 的声明中传递您要测试的字符串!

为什么是test + "" 因为 TS 中的alert() 接受字符串作为参数,所以最好这样写。你可以试试完整代码here。

【讨论】:

if var trigger = "10", regexp = new RegExp('^[1-9]\d0,2$'), test = regexp.test(trigger);警报(测试+“”); alert 返回 false,不正确 用这个替换你当前的正则表达式模式:'^([0-9]\d0,2)+$' 因为您是从字符串创建 RegExp 对象,所以您也需要转义反斜杠:new RegExp('^[1-9]\\d0,2$') 或使用正则表达式文字符号:/^[1-9]\d0,2$/【参考方案2】:

你可以这样做:

var regex = /^[1-9]\d0,2$/g
regex.test('2') // outputs true

【讨论】:

regex.test 不是函数。【参考方案3】:

在打字稿中,声明是这样的:

const regex : RegExp = /.+\*.+/;

使用 RegExp 构造函数:

const regex = new RegExp('.+\\*.+');

【讨论】:

【参考方案4】:

const regex = /myRegexp/

console.log('Hello myRegexp!'.replace(regex, 'World')) // = Hello World!

正则表达式文字符号通常用于创建RegExp的新实例

     regex needs no additional escaping
      v
/    regex   /   gm
^            ^   ^
start      end   optional modifiers

正如其他人建议的那样,您也可以使用 new RegExp('myRegex') 构造函数。 但是你必须特别小心转义:

regex: 12\d45
matches: 12345

const regex = new RegExp('12\\d45')
const equalRegex = /12\d45/

【讨论】:

这个答案救了我的命;)我想在循环中创建 regExp,并基于枚举的值:for (const placeholder in PlaceholdersEnum) if ( Object.keys(PlaceholdersEnum).indexOf(placeholder) !== Object.keys(PlaceholdersEnum).length - 1) regex += (\[\\b$placeholder\\b])| ; else console.log('last one'); regex += (\[\\b$placeholder\\b]); 太棒了!我将在我的简历中添加救生员

以上是关于TypeScript 中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

如何同时进行 Typescript 正则表达式替换和提取值?

如何在 Typescript 中定义正则表达式匹配的字符串类型?

通过 TSLint 中的正则表达式禁用某些字符串的使用?

打字稿和正则表达式

打字稿:如何在 2 行中编写长正则表达式 [重复]

如何将 C# 正则表达式转换为打字稿正则表达式?