亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式量詞語句失敗

正則表達式量詞語句失敗

慕田峪9158850 2023-09-20 14:31:51
我需要我的正則表達式語句來執行以下操作:需要:az 0-多次,0-9 0-3次,& 0-多次,” “0-1次,至少 8 個字符。我還使用這個網站來測試我的代碼 - https://regexr.com。我的正則表達式:([a-zA-Z&]*[0-9]{0,3}[\s]?)\w{8,}這些應該有效:abcD &EFG, ABCde f123, &&12ADSD&&.這些不應該:a bcD &EFG, AB5Cde f123, &&12ADSD&&34,1234567, nope.問題是我的正則表達式將接受任意數量的數字,無論我對其施加限制,并且它會接受單詞中間的空格,但不可預測,我不知道為什么。我是正則表達式的新手,所以請對我溫柔一些
查看完整描述

2 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

當前模式的開頭([a-zA-Z&]*[0-9]{0,3}[\s]?)\w{8,}有 0+ 次、0-3 次或可選的量詞。

最后它應該匹配至少 8 次以上的單詞字符,而這不會匹配任何示例。

您可以使用負前瞻(?!來斷言沒有出現 4 個數字或 2 個空格,然后重復匹配字符類中列出的 8 次以上。

^(?!(?:[^\r\n0-9]*[0-9]){4})(?!(?:\S* ){2})[a-zA-Z0-9 &]{8,}$
  • ^字符串的開頭

  • (?!負向前看,斷言右邊的不是

    • (?:[^\r\n0-9]*[0-9]){4}匹配 4 次一個數字

  • )關閉前瞻

  • (?!負向前看,斷言右邊的不是

    • \S* 匹配 0+ 次非空白字符,然后匹配一個空格

    • (?:非捕獲組

    • ){2}關閉非捕獲組并重復2次

  • )負向前瞻,斷言不是 2 個空格

  • [a-zA-Z0-9 &]{8,}匹配任何列出的 8 次以上

  • $字符串結尾

正則表達式演示


查看完整回答
反對 回復 2023-09-20
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

與正向前瞻有些不同

Pattern.compile("(?=^[^ ]* ?[^ ]*$)(?=^([^0-9]*[0-9]?){1,3}$)^[A-Za-z0-9\\& ]{8,}$")

[a-zA-Z0-9\\& ]{8,}:允許的字符數為 8 個或更多。

(?=^[^ ]* ?[^ ]*$):正向前瞻:允許單個空格

(?=^([^0-9]*[0-9]?){1,3}[^0-9]*$):正向前瞻最多允許三個數字實例

https://regex101.com/r/FvaslE/2


查看完整回答
反對 回復 2023-09-20
  • 2 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號