如何编写匹配单连字符分隔且无空格表达式的正则表达式?
解决正则表达式匹配单连字符分隔且无空格的问题
你的原正则^.[^ ]-[^ ]*存在几个关键问题,导致它会匹配不符合要求的字符串:
- 缺少字符串结尾锚定符
$,只要开头部分符合规则,后面不管有多少连字符或额外内容都会被匹配 [^ ]仅排除空格,没有排除连字符,所以允许出现多个连字符^.仅匹配单个起始字符,后续的[^ ]会包含连字符,导致多连字符场景被匹配
正确的正则表达式
^[^-\s]+-[^-\s]+$
正则各部分解释
^:锚定字符串的起始位置[^-\s]+:匹配至少一个非连字符、非空格的字符(确保分隔前的部分既无空格也无额外连字符)-:匹配唯一的分隔连字符[^-\s]+:匹配至少一个非连字符、非空格的字符(确保分隔后的部分同样无空格和额外连字符)$:锚定字符串的结束位置
匹配验证
- 符合要求的匹配示例:
ss-ss、12-s2、11-11、%@2s-#1都会被正确匹配 - 不符合要求的示例:
s s-ss(含空格)、ss-s s(含空格)、ss-ss-ss(多连字符)都不会被匹配
内容的提问来源于stack exchange,提问作者Jelly
相关产品推荐
相关产品推荐

