![](/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.