搜尋

首頁  >  問答  >  主體

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之間,為什麼匹配不對?

黄舟黄舟2803 天前997

全部回覆(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
  • 取消回覆