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
对象接受两个参数pattern
和flags
,它们可以为空(可以省略/未定义)。要测试您的正则表达式,您必须使用 .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 正则表达式替换和提取值?