正则表达式需求:减号后必须紧跟a-z或0-9字符
满足需求的正则表达式解决方案
正则表达式
^(?!.*-(?:[^a-z0-9]|$)).+$
规则解释
这个正则通过负向预查实现你要的逻辑,确保字符串完全符合要求:
^和$锚定整个字符串,避免只匹配部分内容(?!.*-(?:[^a-z0-9]|$))是核心限制:直接禁止两种非法情况- 减号后面跟着非小写字母/数字的字符(比如
test-!abc里的-!) - 减号出现在字符串末尾(比如
test-或test-one-)
- 减号后面跟着非小写字母/数字的字符(比如
.+匹配任意非空的合法内容(如果允许空字符串,可替换为.*)
示例验证
| 测试字符串 | 匹配结果 | 原因 |
|---|---|---|
test- | false | 减号在末尾,无后续合法字符 |
test-one | true | 减号后紧跟小写字母 |
test-2 | true | 减号后紧跟数字 |
test-one- | false | 末尾减号不符合要求 |
test-one-2 | true | 所有减号后均为合法字符 |
内容的提问来源于stack exchange,提问作者Stefan
相关产品推荐
相关产品推荐

