0

正如主题所示,我需要一个 JavaScript 正则表达式 X 字符长,它接受字母数字字符,但不接受下划线字符,也接受句点,但不接受开头或结尾。期间也不能是连续的。

我几乎可以到达我想在 Stack Overflow 上搜索和阅读其他人的问题和答案的地方(例如这里)。

但是,在我的情况下,我需要一个长度必须正好为 X 个字符的字符串(比如 6 个),并且可以包含字母和数字(不区分大小写),还可以包含句点。

所述句点不能是连续的,也不能开始或结束字符串。

Jd.1.4有效,但Jdf1.4f不是(7 个字符)。

/^(?:[a-z\d]+(?:\.(?!$))?)+$/i 

是我能够使用其他人的示例构建的,但我不能让它只接受与设定长度匹配的字符串。

/^((?:[a-z\d]+(?:\.(?!$))?)+){6}$/i

工作原理是它现在接受不少于 6 个字符,但它也很乐意接受任何更长的字符......

我显然错过了一些东西,但我不知道它是什么。

任何人都可以帮忙吗?

4

2 回答 2

4

这应该有效:

/^(?!.*?\.\.)[a-z\d][a-z\d.]{4}[a-z\d]$/i

解释:

^             // matches the beginning of the string
(?!.*?\.\.)   // negative lookahead, only matches if there are no
              // consecutive periods (.)
[a-z\d]       // matches a-z and any digit
[a-z\d.]{4}   // matches 4 consecutive characters or digits or periods
[a-z\d]       // matches a-z and any digit
$             // matches the end of the string
于 2013-05-09T19:04:43.330 回答
2

另一种方法:

/(?=.{6}$)^[a-z\d]+(?:\.[a-z\d]+)*$/i

解释:

      (?=.{6}$)   this lookahead impose the number of characters before 
                  the end of the string
      ^[a-z\d]+   1 or more alphanumeric characters at the beginning
                  of the string
(?:\.[a-z\d]+)*   0 or more groups containing a dot followed by 1 or 
                  more alphanumerics
              $   end of the string
于 2013-05-09T19:33:57.723 回答