2 回答
TA貢獻1840條經驗 獲得超5個贊
它比你的限制少。
在 之后\D,有 2 個前瞻。對于您的正則表達式,它們是
(?=\w{5})(?=\d{2})這意味著非數字后面的東西必須同時滿足它們。那是,
非數字后必須有 5 個單詞字符,并且
非數字后必須有 2 位數字。
ana12緊跟在字符串中的非數字之后。an不是 2 位數字,因此您的正則表達式不匹配。
然而,工作正則表達式有這兩個先行:
(?=\w{5})(?=\w*\d{2})它斷言緊接在 之后必須有這兩件事\D:
5個單詞字符,和
一堆單詞字符,后跟兩位數字
ana12符合這兩種描述。
試試這個Regex101 演示。查看正則表達式調試器中的第 6 步。那是它試圖匹配第二個前瞻的時候
TA貢獻1936條經驗 獲得超7個贊
您走在正確的軌道上,也許可以使用前瞻,并且模式的開始也正確,但是它缺少一些東西。考慮這個版本:
^\D(?=.*\d{2})\w{4,}$
下面是對模式的解釋:
^ from the start of the string
\D match any non digit character
(?=.*\d{2}) then lookahead and assert that two consecutive digits occur
\w{4,} finally match four or more word characters (total of 5 or more characters)
$ end of the string
您當前嘗試中缺少的主要部分是它在開頭僅匹配一個非數字字符。您需要提供一個可以匹配 5 個或更多字符的模式。
添加回答
舉報
