当我像这样实例化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。当我试图通过在构造函数中抛出字符串来实例化时,我在这里缺少的是什么。代码示例将非常感谢。谢谢你的帮助。
答案 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})$/