React/jsx 元素的 className 中的正则表达式匹配 类
Regex matching classes in className of a React/jsx element
以下是我的 React 组件的片段
<div className="grid lg:grid-cols-2 xl:grid-cols-1 lg:gap-x-5">
<article className={`${index > 0 ? 'border-t lg:border-t-0 xl:border-t border-gray-300/70' : ''} py-8 sm:flex xl:items-center lg:flex-col xl:flex-row`}>
...
</article>
</div>
我需要获取组件中的所有 类。我能够将 className="grid lg:grid-cols-2 xl:grid-cols-1 lg:gap-x-5"
中的 类 与以下正则表达式匹配:
/(?<=className=")(.*)(?=")/g
但是,我不知道如何为
匹配 类
className={`${index > 0 ? 'border-t lg:border-t-0 xl:border-t border-gray-300/70' : 'text-gray-900'} py-8 sm:flex xl:items-center lg:flex-col xl:flex-row`}
比如我需要匹配上例中的"border-t lg:border-t-0 xl:border-t border-gray-300/70 text-gray-900 py-8 sm:flex xl:items-center lg:flex-col xl:flex-row"
您可以试试这 3 个正则表达式的组合:
脚本:
function myFunction() {
text = "<div className=\"grid lg:grid-cols-2 xl:grid-cols-1 lg:gap-x-5\">\
<article className={`${index > 0 ? 'border-t lg:border-t-0 xl:border-t border-gray-300/70' : 'text-gray-900'} py-8 sm:flex xl:items-center lg:flex-col xl:flex-row` }\
...\
</article>\
</div>";
console.log(text.match(/(?<=\?\s?')([^']*)(?='(\s?:|\s?}))|(?<=}\s?)([^`]*)(?=`\s?})/g).join(' '))
}
输出:
注:
- 如果您只需要文章标签内的类名,您可能需要在下面的正则表达式之前添加
article className
检查,因为下面的正则表达式可能会在单引号之间选择其他 类 ( ''
).
以下是我的 React 组件的片段
<div className="grid lg:grid-cols-2 xl:grid-cols-1 lg:gap-x-5">
<article className={`${index > 0 ? 'border-t lg:border-t-0 xl:border-t border-gray-300/70' : ''} py-8 sm:flex xl:items-center lg:flex-col xl:flex-row`}>
...
</article>
</div>
我需要获取组件中的所有 类。我能够将 className="grid lg:grid-cols-2 xl:grid-cols-1 lg:gap-x-5"
中的 类 与以下正则表达式匹配:
/(?<=className=")(.*)(?=")/g
但是,我不知道如何为
匹配 类className={`${index > 0 ? 'border-t lg:border-t-0 xl:border-t border-gray-300/70' : 'text-gray-900'} py-8 sm:flex xl:items-center lg:flex-col xl:flex-row`}
比如我需要匹配上例中的"border-t lg:border-t-0 xl:border-t border-gray-300/70 text-gray-900 py-8 sm:flex xl:items-center lg:flex-col xl:flex-row"
您可以试试这 3 个正则表达式的组合:
脚本:
function myFunction() {
text = "<div className=\"grid lg:grid-cols-2 xl:grid-cols-1 lg:gap-x-5\">\
<article className={`${index > 0 ? 'border-t lg:border-t-0 xl:border-t border-gray-300/70' : 'text-gray-900'} py-8 sm:flex xl:items-center lg:flex-col xl:flex-row` }\
...\
</article>\
</div>";
console.log(text.match(/(?<=\?\s?')([^']*)(?='(\s?:|\s?}))|(?<=}\s?)([^`]*)(?=`\s?})/g).join(' '))
}
输出:
注:
- 如果您只需要文章标签内的类名,您可能需要在下面的正则表达式之前添加
article className
检查,因为下面的正则表达式可能会在单引号之间选择其他 类 (''
).