【问题标题】:Bind regular expression from json to typescript将正则表达式从 json 绑定到打字稿
【发布时间】:2019-05-14 22:34:04
【问题描述】:

我正在从事 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 时,我希望输出如下图所示

但我收到的是这样的

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    要将字符串转换为正则表达式,您可以使用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));
    

    【讨论】:

    • 请检查更新后的问题。添加了更多信息
    【解决方案2】:

    你在 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);

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

    【讨论】:

    • 请检查更新后的问题。添加了更多信息
    • @rakesh 您的需求根本不清楚。请解释你想要做什么。我已经向您展示了如何从字符串创建正则表达式,这正是您最初想要的。现在你想要一个正则表达式数组?是这样吗?
    • 我想要正则表达式数组
    猜你喜欢
    • 2013-01-16
    • 2019-02-17
    • 2019-04-25
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    相关资源
    最近更新 更多