[英]Regex: Testing for entire string
我正在學習如何使用正則表達式,並且在處理此問題時遇到了一些困難。
假設我輸入了一個數字,並且如果該數字包含至少一個7,但不包含9s,則輸入對整個數字返回true。
例如: 123456789
應該返回false,而12345678
的輸入應該為12345678
返回true。
為此應使用什么正則表達式?
我知道涉及術語7+
和[^9]
,但是我不完全確定如何在特定條件下使整數返回true( 7+[^9]
對於123456 78
輸入12345678
返回true 9,當我想讓12345678
返回true時。
對不起,如果我措辭不好。
您可以嘗試類似: ^[0-8]*7[0-8]*$
您可以肯定地提前聲明至少7個數字:
^(?=.*7)[0-8]++$
第一部分(?=.*7)
是零寬度斷言,它測試至少存在7。它通過斷言模式.*7
存在-即后跟7的任何東西來做到這一點。
第二部分[0-8]++
檢查數字中的所有數字是否在0-8之間。 ++
是一個或多個字符的所有格匹配。 因此,該數字必須至少為一位數字。
編輯
要處理@AbsoluteƵERØ的注釋,如果要確保數字是實數,即第一位不是零,則也可以斷言
^(?=.*7)(?!0)[0-8]++$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.