我正在嘗試創建一個正則表達式:必須是一組字符中的第一個字符 ( FIRST_SET)可以選擇在不同的字符集中包含后續字符 ( SECOND_SET)但如果它有 2 個或更多字符,最后一個字符必須在FIRST_SET總長度不能超過MAX_CHARS字符例子FIRST_SET= ac 或 eg(所以 d 被排除在外)SECOND_SET= 股份公司MAX_CHARS= 10這是我到目前為止所擁有的:^[a-c|e-g][a-g]{0,8}[a-c|e-g]{0,1}$這似乎有效,除非d是最后一個字符和總字符數< MAX_CHARS有沒有辦法解決這個問題?
1 回答

MYYA
TA貢獻1868條經驗 獲得超4個贊
您可以使用
^(?!.{11})(?=.*[a-ce-g]$)[a-ce-g][a-g]{0,9}$
請參閱正則表達式演示。
細節
^
- 字符串的開始(?!.{11})
- 最多允許 10 個字符(?=.*[a-ce-g]$)
- 在 0 個或多個字符之后,最后一個應該來自FIRST SET
[a-ce-g]
- 一封來自FIRST SET
[a-g]{0,9}
- 零到九個字符SECOND SET
$
- 字符串結束。
請注意,|
內部字符類匹配文字管道字符,您需要將其從模式中刪除。
如果(?!.{11})
字符串中有任何 11 個字符(換行符除外),則在字符串的開頭執行一次否定前瞻,并且匹配失敗。您也可以使用(?=.{0,10}$)
,它只需要在字符串中包含 0 到 10 個字符。
- 1 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消