我正在从事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时,我希望输出如下图所示
但是我收到的是这样的
答案 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);
它们完全相同,但是使用该构造函数,您可以从字符串创建正则表达式。