Pregmatch验证仅允许一个特殊字符

时间:2016-01-15 12:07:51

标签: javascript regex preg-match

我需要一个pregmatch来检查10个字符串,它只允许最大长度为10的数字和字母后跟一个连字符( - ),所以长度应该是最大值11。

这意味着如果用户输入10个数字或字母,则字符串的最大长度应为10,如果输入一个连字符,则字符串的长度应为11。

^(?=.{0,10}$).*是我目前使用的模式。它只允许10个字符,但接受任何特殊字符。

1 个答案:

答案 0 :(得分:1)

如果您想在字符串中的任何位置允许最多一个连字符但不允许11个字母数字,请尝试

^(?=[a-zA-Z0-9-]{0,11}$)(?![a-zA-Z0-9]{11})[^-]*-?[^-]*$
  • (?=[a-zA-Z0-9-]{0,11}$)检查是否仅包含字母数字字符+连字符
  • (?![a-zA-Z0-9]{11})否定前瞻不允许11连字符
  • [^-]*-?[^-]*$字符串中任意位置的一个可选连字符

See demo at regex101