我正在尝试创建一个正则表达式:必须是一组字符中的第一个字符 ( 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 关注
- 92 浏览
添加回答
举报
0/150
提交
取消