最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

反应组件中的正则表达式标记在两个可能的标签中的名称

IT培训 admin 3浏览 0评论

反应组件中的正则表达式标记在两个可能的标签中的名称

我需要一个正则表达式找到<Field ...name="document"><FieldArray ...name="document">替换为空字符串。它们可以跨多行定义。

这不是html或xhtml,它只是一个包含<Field><FieldArray>的文本字符串

字段示例:

      <Field
        component={FormField}
        name="document"
        typeInput="selectAutocomplete"
      />

FieldArray的示例:

      <FieldArray
        component={FormField}
        typeInput="selectAutocomplete"
        name="document"
      />

它们位于组件列表中。例:

      <Field
        name="amount"
        component={FormField}
        label={t('form.amount')}
      />
      <Field
        name="datereception"
        component={FormField}
        label={t('form.datereception')}
      />
      <Field
        component={FormField}
        name="document"
        typeInput="selectAutocomplete"
      />
      <Field
        name="datedeferred"
        component={FormField}
        label={t('form.datedeferred')}
      />

我已经阅读了一些解决方案,比如在Extract image src from a string找到src但是他的结构与我正在寻找的不同。

回答如下:

不建议使用parse [X]HTML with regex。如果你有可能使用domparser,我建议使用它而不是正则表达式。

如果没有其他方法,您可以使用此方法来查找和替换您的数据:

<Field(?:Array)?\b(?=[^\/>]+name="document")[^>]+\/>

说明

  • <Field与可选的“数组”匹配,并以单词边界<Field(?:Array)?\b结尾
  • 积极向前看(?=
  • 其中断言以下不是/>并遇到name =“document”[^\/>]+name="document"
  • 匹配不是>一次或多次[^>]+
  • 匹配\/>

var str = `<Field
    name="amount"
    component={FormField}
    label={t('form.amount')}
  />
  <Field
    name="datereception"
    component={FormField}
    label={t('form.datereception')}
  />
  <Field
    component={FormField}
    name="document"
    typeInput="selectAutocomplete"
  />
  <Field
    name="datedeferred"
    component={FormField}
    label={t('form.datedeferred')}
  />
<FieldArray
    component={FormField}
    typeInput="selectAutocomplete"
    name="document"
  /><FieldArray
    component={FormField}
    typeInput="selectAutocomplete"
    name="document"
  />` ;
str = str.replace(/<Field(?:Array)?\b(?=[^\/>]+name="document")[^>]+\/>/g, "");
console.log(str);

反应组件中的正则表达式标记在两个可能的标签中的名称

我需要一个正则表达式找到<Field ...name="document"><FieldArray ...name="document">替换为空字符串。它们可以跨多行定义。

这不是html或xhtml,它只是一个包含<Field><FieldArray>的文本字符串

字段示例:

      <Field
        component={FormField}
        name="document"
        typeInput="selectAutocomplete"
      />

FieldArray的示例:

      <FieldArray
        component={FormField}
        typeInput="selectAutocomplete"
        name="document"
      />

它们位于组件列表中。例:

      <Field
        name="amount"
        component={FormField}
        label={t('form.amount')}
      />
      <Field
        name="datereception"
        component={FormField}
        label={t('form.datereception')}
      />
      <Field
        component={FormField}
        name="document"
        typeInput="selectAutocomplete"
      />
      <Field
        name="datedeferred"
        component={FormField}
        label={t('form.datedeferred')}
      />

我已经阅读了一些解决方案,比如在Extract image src from a string找到src但是他的结构与我正在寻找的不同。

回答如下:

不建议使用parse [X]HTML with regex。如果你有可能使用domparser,我建议使用它而不是正则表达式。

如果没有其他方法,您可以使用此方法来查找和替换您的数据:

<Field(?:Array)?\b(?=[^\/>]+name="document")[^>]+\/>

说明

  • <Field与可选的“数组”匹配,并以单词边界<Field(?:Array)?\b结尾
  • 积极向前看(?=
  • 其中断言以下不是/>并遇到name =“document”[^\/>]+name="document"
  • 匹配不是>一次或多次[^>]+
  • 匹配\/>

var str = `<Field
    name="amount"
    component={FormField}
    label={t('form.amount')}
  />
  <Field
    name="datereception"
    component={FormField}
    label={t('form.datereception')}
  />
  <Field
    component={FormField}
    name="document"
    typeInput="selectAutocomplete"
  />
  <Field
    name="datedeferred"
    component={FormField}
    label={t('form.datedeferred')}
  />
<FieldArray
    component={FormField}
    typeInput="selectAutocomplete"
    name="document"
  /><FieldArray
    component={FormField}
    typeInput="selectAutocomplete"
    name="document"
  />` ;
str = str.replace(/<Field(?:Array)?\b(?=[^\/>]+name="document")[^>]+\/>/g, "");
console.log(str);
发布评论

评论列表 (0)

  1. 暂无评论