簡體   English   中英

重復模式的正則表達式

[英]Regex for repeating pattern

我需要一個滿足以下條件的正則表達式。 1.字符串總長度300個字符。 2.應以&,-,/,#開頭,后面只跟3 or 4 alphanumeric characters 3.上面的圖案可以連續字符串,最多300 characters

字符串示例 - &ACK2-ASD3#RERT ...

我試過重復這個小組但不成功。

(^[&//-#][A-Za-z0-9]{3,4})+ 

這不起作用..只是匹配第一組

您可以首先使用/^(?:[&\\/#-][A-Za-z0-9]{3,4})+$/ regex驗證字符串並檢查字符串長度(使用s.length <= 300 )然后返回所有匹配與驗證正則表達式的一部分:

 var s = "&ACK2-ASD3#RERT"; var val_rx = /^(?:[&\\/#-][A-Za-z0-9]{3,4})+$/; if (val_rx.test(s) && s.length <= 300) { console.log(s.match(/[&\\/#-][A-Za-z0-9]{3,4}/g)); } 

正則表達式細節

  • ^ - 字符串的開頭
  • (?:[&\\/#-][A-Za-z0-9]{3,4})+ - 出現1次或多次:
    • [&\\/#-] - &/#-
    • [A-Za-z0-9]{3,4} - 三個或四個字母數字字符
  • $ - 結束字符串。

請參閱正則表達式演示

請注意,缺少g修飾符,並且驗證正則表達式與RegExp#test一起使用,並且它必須存在於提取正則表達式中(因為我們只需檢查字符串一次,但提取多次出現)。

你很親密 將前瞻: (?=.{0,300}$)到開頭以使其滿足長度要求並使用純RegExp執行:

/(?=.{0,300}$)^([&\-#][A-Za-z0-9]{3,4})+$/.test("&ACK2-ASD3#RERT")

您可以嘗試以下正則表達式

 const regex = /^([&\\/\\-#][A-Za-z0-9]{3,4}){0,300}$/g; const str = `&ACK2-ASD3#RERT`; if (regex.test(str)) { console.log("Match"); } 

暫無
暫無

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

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