有正则表达式匹配“aa”和“b-b”,但不是“a-b”?

Ahm*_*hmi 2 javascript regex

这是一个很难表达的问题,但是有没有办法让正则表达式匹配'a-a'and 'b-b',但不是'a-b'?基本上我希望它与中间字符(例如“-”)两侧的相同字符匹配,但是该字符可以与一组字符(例如[abc])中的其他字符互换。我希望解决方案不是蛮力的,因为我想到的字符集非常大,答案应该在 javascript 中

Rob*_*bok 5

您正在寻找的模式是 /^([a-c])-\1$/

您可以通过\number语法引用任何捕获的组,其中number是您的组的编号,从 1 开始。

测试:

const pattern = /^([a-c])-\1$/;

pattern.test('a-a'); // true
pattern.test('b-b'); // true
pattern.test('c-c'); // true
pattern.test('a-b'); // false
Run Code Online (Sandbox Code Playgroud)