如何使用正则表达式匹配双下划线,但不匹配单下划线(__而不是_)?

3
我正在为修改后的BEM编写stylelint规则,该规则实质上是说单个下划线不允许使用,但是双下划线可以使用。
匹配情况:
- foo__bar 不匹配情况:
- foo_bar - foo_bar__baz
我希望(理想情况下)不仅有一个可工作的代码片段,还要解释如何使用JavaScript正则表达式来解决这类问题。
以下是关于stylelint的相关文档:https://stylelint.io/user-guide/rules/selector-class-pattern/ 以下是需要通过的测试套件:https://regex101.com/r/NjwOa3/3/tests

一个 Stylelint 规则是什么样子的?你能给出一个模板示例吗?展示一下你已经做到了什么。 - tadman
@tadman更新了问题。 - Dan Green-Leipciger
@tadman,我刚意识到我需要的实际上与我所问的不同(它还需要匹配没有下划线的情况)。我应该提出另一个问题还是更新这个问题?给出的答案确实适用于我所问的。 - Dan Green-Leipciger
1
如果您得到了令人满意的答案,请接受该答案并重新发布更具体的问题。请注意,尽量提供更多的示例。例如,我想知道 foo___bar__foo_bar 是否被算作符合要求。 - tadman
1个回答

3
您可以尝试使用以下正则表达式。
^[^_]*_{2,2}[^_]*$

或者尝试只匹配双下划线的方法。

_{2,2}

1
对于“两个或更多”,您可能想要使用__+。不确定为什么您没有使用__,因为这可能比_{2,2}更容易。 - tadman
最终我们没有使用正则表达式。 - Dan Green-Leipciger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接