将正则表达式从json绑定到打字稿

时间:2019-05-14 12:16:11

标签: angular typescript

我正在从事angular 7项目。我有config.json文件,其中标签名称之一是inputmask'

config.json

{
"name" : "abc",
"maskRegExp" : "[/[0-9]/, /\d/, /\d/, '-', /[0-9]/, /\d/, /\d/, /\d/, /\d/, /\d/, '-', /[0-9]/, /\d/, /\d/]"

打字稿文件

export class sampleComponent implements OnInit {

getExp : any;

  ngOnInit(){
     this.getExp = this.data.maskRegExp; //returns as string which shouldn't
}

预期数据

 this.getExp = [/[0-9]/, /\d/, /\d/, '-', /[0-9]/, /\d/, /\d/, /\d/, /\d/, /\d/, '-', /[0-9]/, /\d/, /\d/];
  }

问题是正则表达式未返回json,而是将其作为字符串发送。我知道对于人们来说,这可能看起来像是一个愚蠢的问题,但我对angular / javascript不熟悉。请帮我提供一些示例代码。

当我console.log this.getExp时,我希望输出如下图所示

enter image description here

但是我收到的是这样的

enter image description here

2 个答案:

答案 0 :(得分:2)

要将字符串转换为正则表达式,可以使用RegExp对象:

this.getExp = new RegExp(this.data.maskRegExp);

如果您想要如上所述的输出,则显然不应该使用RegExp,而应将字符串用逗号+空格分开。

this.getExp = this.data.maskRegExp.split(', ');

如果希望它是正则表达式数组,则可以执行以下操作:

this.getExp = this.data.maskRegExp.split(', ').map((r) => new RegExp(r));

答案 1 :(得分:1)

您在JS中有一个Regexp对象:

const str = "[/[0-9]/, /\d/, /\d/, '-', /[0-9]/, /\d/, /\d/, /\d/, /\d/, /\d/, '-', /[0-9]/, /\d/, /\d/]";

const regex = new RegExp(str, 'gi');

console.log(regex);

它们完全相同,但是使用该构造函数,您可以从字符串创建正则表达式。