构建此JavaScript正则表达式的困难

时间:2011-02-15 22:43:53

标签: javascript regex lookbehind

我想构造一个正则表达式,匹配任何字母(包括重音和希腊语),数字,连字符和空格,允许的总字符长度在3到50之间。

这就是我所做的:

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

现在我不想调整表达式,以便它不能以连字符或空格开头。它将用于验证用户名。

我考虑过使用负面的后视,但这些都是限制因素:

  • JavaScript不支持lookbehind。
  • lookbehind的alternatives并不适用,因为它们都依赖于其他JavaScript函数,我必然会使用匹配函数。

我希望这里有正则表达式英雄,因为它看起来并不简单。

1 个答案:

答案 0 :(得分:2)

为了便于阅读,我用a-z替换了你的长字符类:

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

您还可以匹配当前的正则表达式,然后确保该字符串与另一个匹配项中的^[ -]不匹配。