【发布时间】:2022-01-23 00:29:04
【问题描述】:
我想提取 className 属性中的字符串文本。例如,给定以下内容:
className="class1 class2" // should match: class1 class2
className='class1 class2' // should match: class1 class2
className={"class1 class2"} // should match: class1 class2
className={'class1 class2'} // should match: class1 class2
className={clsx("class1 class2")} // should match: class1 class2
className={clsx(foo, bar, "class1 class2", bar)} // should match: class1 class2
className={classname(foo, bar, "class1 class2", bar)} // should match: class1 class2
className={anything(foo, bar, "class1 class2", bar)} // should match: class1 class2
className={`flex-col flex ${className}`} // should match: flex-col flex
我想到的最好的是:
// this also matches the pref/suffix quotes. e.g. "class1 class2"
(?:\b(?:class(?:Name)?|tw)\s*=\s*(?:(?:{([\w\d\s!?_\-:/${}()[\\]\"'`,]+)})|([\"'`][\w\d\s_\-:/]+[\"'`])));
// close to working example here, but not sure what Im doing wrong
(?:[\\\"'\\`]([.wds_\-:/${}()\\[\\]\\]+)[\\\"'\\`])
【问题讨论】:
-
不要尝试使用正则表达式解析 HTML,使用 DOM 解析器。
-
@Barmar 这不适用于客户端。正则表达式是我正在使用的 VS 扩展的一部分。本质上,使用仅选择类名的正确正则表达式将允许扩展以正确的顺序转换文本。
标签: javascript regex