2011-02-15 22 views
0

我想構建匹配任何字母(包括重音符和希臘),數字,連字符和空格具有3至50困難構建該JavaScript正則表達式

這是一個總的允許的字符長度的正則表達式我做了什麼:

[- a-zA-Z0-9çæœáééíóúžàèìòùäëïöüÿâêîôûãñõåøαβγδεζηθικλμνξοπρστυφχψωÇÆŒÁÉÍÓÚŽÀÈÌÒÙÄËÏÖÜŸÂÊÎÔÛÃÑÕÅØΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ]{3,50} 

現在我不想調整表達式,以便它不能以連字符或空格開始。它將被用來驗證用戶名。

我想過使用負回顧後發,但這些都是限制:

  • JavaScript不支持回顧後。
  • 對於lookbehind而言,alternatives並不適用,因爲它們都依賴於其他JavaScript函數,所以我必須使用匹配函數。

我希望這裏有任何正則表達式的英雄,因爲它看起來不簡單。

+2

只是一個提示:請檢查希臘語(和其他字母)所在的unicode範圍。您可以用`\ uxxxx- \ uyyyy`替換長字符列表。 – 2011-02-15 22:50:37

+0

不錯的提示。要檢查出來! – DADU 2011-02-15 22:52:04

回答

2

我換成你的較長的字符類a-z的可讀性:

[a-z][- a-z]{2,49} 

你也可以配合您當前的正則表達式,然後確保該字符串不以另一場比賽匹配^[ -]