搜索

首页  >  问答  >  正文

javascript - js正则表达式{}范围

正则匹配:以小写字母开头,小写字母结尾,中间可以有一个短横(-)长度小于32字符

var ss = /^[a-z]+([A-Za-z0-9_]|(-?)|[a-z]+$){1,31}/;
str="ss-fjdkkldjkskjdskjdksjdkjdkjklskssdkdkffdkdfkdfk";
ss.test(str);

返回的结果是
true
正常应该返回false。
其中{1,31}表示匹配前面的范围在1到31之间,为什么匹配不对?

黄舟黄舟2725 天前955

全部回复(2)我来回复

  • 怪我咯

    怪我咯2017-06-12 09:34:53

    这个正则我的理解是表示以字母a-z开头,然后()中的内容出现1到31次,
    ()中表示A-Z a-z 0-9 _ - 其中任意一个可以出现>=1次

    回复
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-12 09:34:53

    正则表示式可以这样写

    /^(?=.{1,32}$)[a-z]\w*(?:-\w*[a-z])?$/

    回复
    0
  • 取消回复