想知道如何驗證一個字符串,如前3連續數字不能連續8或9?例如:正則表達式來檢查前3個連續數字
88839182 (not valid)
99923213 (not valid)
98188823 (valid)
98939117 (valid)
使用s.match("([98]){3}")
嘗試,但它似乎沒有工作,因爲它需要在989的第3個字符了。
想知道如何驗證一個字符串,如前3連續數字不能連續8或9?例如:正則表達式來檢查前3個連續數字
88839182 (not valid)
99923213 (not valid)
98188823 (valid)
98939117 (valid)
使用s.match("([98]){3}")
嘗試,但它似乎沒有工作,因爲它需要在989的第3個字符了。
我會假設你的問題說法正確的是:你想(一)發現(b)如果這是888或999,則拒絕該字符串。因此,分兩步進行:
匹配三個連續數字的正則表達式僅僅是(\d)\1\1
。其餘依賴於你的編程語言(你沒有指定);它幾乎肯定是一種返回數字字符串中第一個匹配內容的方法。
另外,定義問題是 「不與888或999開始」 的更簡單的方法,
它找到無效數據:
s.match("^(999|888)")
要找到有效數據;數據;
!s.match("^(999|888)")
嗨!感謝您的回覆。我只想要前3個連續的數字。後續的連續數字被認爲是有效的 –
@ahgal歡迎!檢查編輯! – Kasramvd
@卡斯拉,很好的解決方案。我會指出,如果要求只捕獲數字(這不是特定的,但是基於示例如何解釋需求),那將是一個不同的正則表達式。您的正則表達式將匹配123abc,foo,「hello world」等。要將其限制爲僅數字:「(?=^\ d + $)(?!([98])\ 1 \ 1)\ d +」第一個斷言確保整個字段都是數字。第二個主張是你的。最後,我使用了\ d而不是點,所以如果你想123中的「123 z」改變^和$到\ b和瞧! – Luv2code