验证中间

时间:2017-12-01 07:57:54

标签: javascript regex ecmascript-6

我有以下正则表达式来测试字符输入是否为大写字母和数字

const isCapitalLetters = value => /^[A-Z]/.test(value);

如何测试我是否只允许单个连字符可以输入字符串的中间而不是在结尾或开头。

2 个答案:

答案 0 :(得分:1)

这样做:

/^([A-Z0-9]|[A-Z0-9]+-?[A-Z0-9]+)$/.test(value)

('|'之前的部分确保一个字符的字符串将通过测试)

答案 1 :(得分:1)

如果您只想在开头和开头使用可选的超级字母来测试大写字母和数字,可以这样做:

^[A-Z\d]+-?[A-Z\d]*[A-Z\d]$

  • 从字符串^
  • 的开头
  • 匹配大写字母或数字一次或多次[A-Z\d]+
  • 匹配可选连字符-?
  • 匹配大写字母或数字或连字符零次或多次[A-Z\d-]*
  • 匹配大写字母或数字[A-Z\d]
  • 字符串$
  • 的结尾

如果您允许使用单个字符,则可以使用非捕获组和|来首先检查单个大写字符或数字:

^(?:[A-Z\d]|[A-Z\d]+-?[A-Z\d]*[A-Z\d])$