反应组件中的正则表达式标记在两个可能的标签中的名称
我需要一个正则表达式找到<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);