簡體   English   中英

Java正則表達式負向前瞻不能正常工作

[英]Java regex negative lookahead not working properly

我正在努力創建一個正則表達式來驗證字符串是否以X字符序列(同一個字符)結尾。

例如:x = 5

1xxxxx - should fail
1xxx - should pass

到目前為止我的正則表達式: 1(?!\\\\w\\1{4})不起作用。 兩種情況都返回false。

謝謝

您需要添加字符串錨點結束:

1(?!.*(.)\1{4,}$).*$

這是一個艱難的,但如果你的問題中的條件是正確的,“字符串不以X字符序列結束”,這應該這樣做:

(?:(.)(?:(?:(?!\1).){1,4})|^(.)\2{0,3})$

它基本上是非捕獲組內的兩種可能的改變(?: - )

最后一部分 - ^(.)\\2{0,3} - 只測試它是否只包含一個字符,小於五個字符的完整字符串。

第一部分 - (.)(?:(?:(?!\\1).){1,4}) - 通過捕獲一個來檢查角色的變化,並通過負面的預測來確定它沒有t匹配下一個匹配的. 並測試重復次數少於四次

兩個變更都在組外的字符串$結尾進行測試。

請在regex101查看

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM