如何编写JS正则匹配首尾可含空格、中间带连字符且无空格的字符串
解决方案
你需要的JavaScript正则表达式可以写成:
/^\s*(?=[A-Za-z0-9-]*-[A-Za-z0-9-]*)[A-Za-z0-9-]+\s*$/
如果想要忽略大小写匹配(比如z5lw-krt2这类小写形式也能匹配),可以加上i标志:
/^\s*(?=[A-Za-z0-9-]*-[A-Za-z0-9-]*)[A-Za-z0-9-]+\s*$/i
正则各部分解析
^\s*:匹配字符串开头的0个或多个空白字符(包括空格、制表符等;如果只想允许普通空格,替换成^[ ]*即可)(?=[A-Za-z0-9-]*-[A-Za-z0-9-]*):正向预查断言,确保核心内容里至少包含一个连字符-,不管连字符在核心内容的哪个位置[A-Za-z0-9-]+:匹配核心内容,仅由大小写字母、数字和连字符组成,且长度至少为1(结合预查逻辑,实际核心内容至少是x-y这类带连字符的结构)\s*$:匹配字符串结尾的0个或多个空白字符(同理,只想允许普通空格就替换成[ ]*$)
验证情况
- 匹配示例:
'Z5LW-KRT2':首尾无空格,核心含连字符,符合规则' Z5LW-krt2':开头带空格,核心含连字符,符合规则'Z5LW-KRT2 ':结尾带空格,符合规则' Z5LW-KRT2 ':首尾均带空格,符合规则
- 不匹配示例:
' Z5LW-K RT2 ':核心内容中间有空格,不符合规则,正则会直接排除
内容的提问来源于stack exchange,提问作者Nitin Misra
相关产品推荐
相关产品推荐

