keycan
2019-12-04 09:33
采纳率: 100%
浏览 1.8k

求一个正则表达式: 只允许填写位数字、字母、_和-,且不允许11位纯数字

项目新需求, 需要对登录用户名进行控制, 只允许填写位数字、字母、_和-,且不允许11位纯数字!
我现在有2个正则 :
1, 只允许填写数字, 字母,_和-, 且不允许纯数字 : ^(?!\d+$)[\da-zA-Z_-]+$
2, 不允许11位纯数字 : ^((?!^(\d{11})+$).)*$
现在需要把这2个合起来, 就能满足需求了.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • lppzyt 2019-12-04 12:13
    已采纳

    因为要求不是互斥的。不能一个正则写完。判断是十一位且都是数字。
    正则为^([\d]{11})$,匹配直接return false。不匹配接着匹配这个正则^([\dA-Za-z_]{6,11})$。

    点赞 打赏 评论
  • 点赞 打赏 评论
  • 王能 2019-12-04 13:57

    6-11位,不是纯数字的正则,拿走不谢:
    ^(?!\d{11,11})[\da-zA-Z_-]{6,11}$

    第一次遇见不采纳最佳答案而选择南辕北辙的

    点赞 打赏 评论

相关推荐 更多相似问题