Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用字符串输入创建正则表达式对象_Javascript_Regex_Angular_Typescript - Fatal编程技术网

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

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

当我像这样实例化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.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})$/

它工作,但我不必添加双反斜杠。谢谢你的帮助。