![](/img/trans.png)
[英]javascript regex to check if first and last character are similar?
[英]Regex expression to check if first and last char of set are different
假设我有一串只有a
和b
的字符串,如下所示:
aaabbbbababab
如何构造一个正则表达式,仅当第二个和最后一个字符不同时才匹配给定的字符串?
这是我目前的尝试,完全相反(例如,如果第二个和最后一个字符相同则匹配):
^[ab]([ab])[ab]*\1$
我正在使用正则表达式的 ECMAScript 实现。
您可以将捕获组用于第二个字符,并且仅在与捕获组 1 不同时匹配最后一个字符。
^[ab]([ab])[ab]*(?!\1)[ab]$
^
字符串开头[ab]
匹配 a 或 b(请注意,您可以省略|
因为它表示字符 class 中的 pipe 字符([ab])
捕获组 1 ,匹配 a 或 b[ab]*
可选匹配 a 或 b(?!\1)
负前瞻,断言与使用反向引用\1
在组 1 中捕获的值不同[ab]$
匹配字符串末尾的 a 或 b另一种选择是在捕获组之后立即进行断言
^[ab]([ab])(?![ab]*\1$)[ab]*$
或者,如果支持,因为负面的后视也可能起作用。 此页面显示 Javascript 的兼容性和后视
^[ab]([ab])[ab]*[ab]$(?<!\1)
如果您不必验证整个字符串是一堆ab
,那么我会 go 用于通用的东西,例如:
^.(.).*(?!\1).$
^.
- 从一个字符开始(.)
- 将第二个字符放入捕获组.*
- 可选地捕获前进的所有内容(?.\1).$
- 确保最终字符与第二个字符不同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.