使用字符串输入创建正则表达式对象

时间:2018-05-17 20:30:12

标签: javascript regex angular typescript

当我像这样实例化Regex对象时,我有一个正则表达式:

%do i=1 %to [##];
     ... do iterative stuff ...
%end;

它运行正常但是如果我将正则表达式存储在字符串中则不起作用:

this.checkRegex = new RegExp(/^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$/);

我正在使用angular-typescript。当我试图通过在构造函数中抛出字符串来实例化时,我在这里缺少的是什么。代码示例将非常感谢。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

当您将字符串传递给RegExp构造函数时,您需要稍微更改它。而不是

'/^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$/'

您将省略前面和后面的斜杠

'^([0|\\[+][0-9]{0,5})?([1-9][0-9]{0,15})$'

请注意,双重转义反斜杠。

答案 1 :(得分:1)

如果要将RegExp存储为字符串,请将其存储在正面和背面,而不使用正斜杠。在创建RegExp对象时,这些对象会被转义:

new RegExp('/^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$/');

将导致

/\/^([0|[+][0-9]{0,5})?([1-9][0-9]{0,15})$\//

while,

new RegExp('^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$');

将起作用:

/^([0|[+][0-9]{0,5})?([1-9][0-9]{0,15})$/