我想用以下条件验证 Name 数据文件
- 名称包含数字 0 到 9,不全是数字
- 名称可以包含连字符 -,前提是它不是第一个或最后一个 名字的特点
- 名称必须包含2个字符,其余字符可选
所以我尝试了以下正则表达式
const regExp = /^[a-zA-Z0-9]+[a-zA-Z_-]+[a-zA-Z0-9]$/;
我至少需要两个字符,其余的在正则表达式中是可选的
一切正常,除了最后这个 [a-zA-Z0-9]
,我想把它设为可选
最佳答案
你可以考虑使用
/^(?=.{2})(?![^a-zA-Z]+$)[a-zA-Z0-9]+(?:[_-][a-zA-Z0-9]+)*$/
参见 regex demo
详情
^
- 字符串的开始(?=.{2})
- 至少两个字符(?![^a-zA-Z]+$)
- 字符串不能没有 ASCII 字母[a-zA-Z0-9]+
- 1+ 个 ASCII 数字字符(?:[_-][a-zA-Z0-9]+)*
- 0 个或多个_
或-
后跟 1+ 个 ASCII alnum 字符$
- 字符串结尾。
关于javascript - JavaScript 中的正则表达式可选字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57808547/