我试图找到一个完美的RegExp来找到具有特定属性的React组件。必须在IDE VSCode的搜索字段中使用RegExp。
组件示例:第一个月
属性示例:size
个
单行组件
如果组件的开始标签在一行上,我发现可以完美工作的RegExp是这样的(VSCode中不允许使用标志):/<Button.+size/
个
例如,这将匹配到size
的结尾:
<Button onClick={()=>{}} size='medium'>
字符串
多行组件
有时候,组件有太多的属性,以至于公司的代码风格会希望将其拆分为几行,每行一个属性,就像这样:
<Button
type="button"
size="tiny"
className={styles.pauseButton}
onClick={togglePaused}
title="Pause or enable automatic loading of webhook requests in the debug console."
>
型
我无法编写一个RegExp来匹配这些特定的情况:
1.是否有一个单一的RegExp适用于这两种情况(并且不匹配其他任何东西)?
1.如果两种情况下都不存在一个RegExp,是否有一个RegExp只匹配开/闭括号之间具有特定prop的多行组件?
我所尝试的
我试过使用/<Button[\s\S]*?size[\s\S]*?>/
,但它过度匹配了没有size属性的情况,所以它会一直匹配,直到在某处找到一个size字。
目前我使用/<Button[\n]/
,它匹配所有且仅匹配拆分组件,然后我必须手动检查它们是否具有特定的属性。我仍然更喜欢RegExp,它只与特定属性的分割相匹配。
我也发现了这个nice answer,但是如果组件有其他属性,比如箭头函数和作为 prop 的组件,它就会崩溃。这可能是一个很好的基础,从tho开始。RegExp的答案是:<Component(\s|\n)[^>]*?property
个
可能是一些 lookaheads 的东西,但我没有足够的经验...
谢啦,谢啦
1条答案
按热度按时间o8x7eapl1#
对于任何有同样问题并想要快速修复的人,这里有一个我发现适用于多行的RegExp。我在一个react代码中使用了这个。
字符串
我用它来查找任何带有size属性的Button组件,它并不完美,但为我完成了这项工作。