fra*_*pps 2 javascript regex regex-negation regex-lookarounds
假设我只有一串a's 和b's,如下所示:
aaabbbbababab
Run Code Online (Sandbox Code Playgroud)
如何构造一个正则表达式,仅当第二个和最后一个字符不同时才匹配给定的字符串?
这是我目前的尝试,正好相反(例如,如果第二个和最后一个字符相同,则匹配):
^[ab]([ab])[ab]*\1$
Run Code Online (Sandbox Code Playgroud)
我正在使用正则表达式的 ECMAScript 实现。
您可以对第二个字符使用捕获组,并且仅在最后一个字符与捕获组 1 不同时才匹配它。
^[ab]([ab])[ab]*(?!\1)[ab]$
Run Code Online (Sandbox Code Playgroud)
^ 字符串的开始[ab]匹配 a 或 b(请注意,您可以省略,|因为它表示字符类中的管道字符([ab])捕获组 1,匹配 a 或 b[ab]* 可选匹配 a 或 b(?!\1) 负前瞻,使用反向引用断言与组 1 中捕获的值不同 \1[ab]$ 匹配字符串末尾的 a 或 b另一种选择是在捕获组之后立即进行断言
^[ab]([ab])(?![ab]*\1$)[ab]*$
Run Code Online (Sandbox Code Playgroud)
或者,如果支持,因为负向后视也可能有效。此页面显示了 Javascript 和lookbehinds 的兼容性
^[ab]([ab])[ab]*[ab]$(?<!\1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |