正则表达式允许在长度为8的字母数字字符串之间使用一个连字符

时间:2016-07-06 14:29:45

标签: regex validation

尝试了这个正则表达式但没有奏效:

^([a-zA-Z0-9])+([a-zA-Z0-9]-\){8}$

匹配的正则表达式:

112-4324

1d5g-5HU

ER9O5-11

但不匹配:

112-234213421   (more than 8 chars)

1244-53         (less than 8 chars)

-23432BB        (hyphen at begining)

5tT569K-         (hyphen in the end)

234-23-5         (two hyphens)

RTG--43T          (two consecutive hyphens)

1 个答案:

答案 0 :(得分:2)

您可以根据前瞻使用此正则表达式:

^(?=[a-zA-Z0-9-]{8}$)[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)$

RegEx Demo

  • (?=[a-zA-Z0-9-]{8}$)是肯定的预测,以确保输入中有8个字符。
  • [a-zA-Z0-9]+(-[a-zA-Z0-9]+)将确保-只在中间出现一次。