Javascript 使用字符串输入创建正则表达式对象
当我像这样实例化regex对象时,我有一个regex:Javascript 使用字符串输入创建正则表达式对象,javascript,regex,angular,typescript,Javascript,Regex,Angular,Typescript,当我像这样实例化regex对象时,我有一个regex: this.checkRegex = new RegExp(/^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$/); 它可以正常工作,但是如果我将正则表达式存储在字符串中,它将不起作用: private checkReg: string = '/^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$/'; this.checkRegex = new RegExp(this.c
this.checkRegex = new RegExp(/^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$/);
它可以正常工作,但是如果我将正则表达式存储在字符串中,它将不起作用:
private checkReg: string = '/^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$/';
this.checkRegex = new RegExp(this.checkReg);
我用的是有角度的字体。当我试图通过在构造函数中抛出字符串来实例化时,这里缺少的是什么。代码示例将非常感谢。谢谢您的帮助。当您将字符串传递给RegExp构造函数时,您需要稍微更改它。而不是
'/^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$/'
您可以省略前面和后面的斜杠
'^([0|\\[+][0-9]{0,5})?([1-9][0-9]{0,15})$'
请注意,还要对反斜杠进行双转义。如果要将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})$\//
而
new RegExp('^([0|\[+][0-9]{0,5})?([1-9][0-9]{0,15})$');
将工作:
/^([0|[+][0-9]{0,5})?([1-9][0-9]{0,15})$/
它工作,但我不必添加双反斜杠。谢谢你的帮助。