【问题标题】:How to create filter for any regular Expression如何为任何正则表达式创建过滤器
【发布时间】:2019-10-04 16:38:58
【问题描述】:

我正在开发 Angular 7 项目。我有在 config.json 文件中配置的正则表达式。

我希望通用过滤器解决方案将数据与正则表达式匹配,并显示该数据与正则表达式匹配。

示例: 如果正则表达式为:[0-9],\d,\d,-,[0-9],\d,\d,\d,\d,\d,-,[0-9],\d ,\d
数据:123456789321
输出应为:123-456789-321

如果正则表达式为:[0-9],\d,\d,-,[0-9],\d,\d
数据:123456
输出应为:123-456

【问题讨论】:

标签: html angular filter


【解决方案1】:

编辑: 尝试 https://www.npmjs.com/package/ngx-mask 与常规 exp。

  data = '123456789321';
  constructor() {

  }
  ngOnInit() {
    this.getStr('[0-9],\d,\d,-,[0-9],\d,\d,');
    this.getStr('[0-9],\d,\d,-,[0-9],\d,\d,\d,\d,\d,-,[0-9],\d,\d,');
  }

  getStr(regStr) {
    const parts = regStr.split('-,');
    let prevLen = 0;
    let str = '';
    parts.forEach((part, index) => {
      let len = part.split(',').length - 1;
      str = index === 0 ? `${this.data.substr(prevLen, len)}` : `${str}-${this.data.substr(prevLen, len)}`
      prevLen = prevLen + len;
    })
    console.log(str);
  }

【讨论】:

  • 你可以在 stackblitz 中创建这个例子以便更好地理解
  • const 部分 = regStr.split('-,');这又是静态的。你用连字符分开。我的 RegExp 可以是任何东西,它可以有 (,),$,#,@...
猜你喜欢
  • 1970-01-01
  • 2020-03-28
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多