[英]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.