0

我需要一些关于正则表达式的小帮助以获取以下内容

  1. 仅允许使用小写字母的字母数字
  2. 以数字或字母开头
  3. 允许句点 (.)
  4. 不允许连续的期间没有..
  5. 不允许任何其他特殊字符

谢谢,-GM

4

5 回答 5

4
^(?![^.]*\.\.)[a-z0-9][a-z0-9.]*$

开头的负前瞻涵盖了您的第四个要求,其他一切都应该非常简单。 ^并且$是字符串锚的开头和结尾,字符类强制要求只允许小写字母、数字和.

要添加长度限制(6 到 16 个字符之间),只需*{5,15}. *表示“重复前一个元素零次或多次”,{n,m}表示“在nm次之间重复前一个元素(包括)”。{5,15}使用而不是的原因是{6,16}第一个字符类已经使用了一个字符。这是最终结果:

^(?![^.]*\.\.)[a-z0-9][a-z0-9.]{5,15}$
于 2013-07-25T22:09:29.800 回答
3

这里有一些帮助,但不会泄露答案,因为您将学到最多。

  1. 要匹配某个字符组合(例如字母数字),请使用字符类例如 [a-z0-9]. 请注意,此表达式仅匹配一个字符。您必须使用量词来匹配多个,例如 +.
  2. 要“开始”或“结束”某事,您必须分别在第一个字符之前或最后一个字符之后使用锚点和。(但请注意。在字符类中,字符类会反转。)^$^
  3. 在正则表达式中,作为通配符.具有特殊含义(匹配除换行符之外的任何字符)。因此,您必须对它们进行转义,, 才能选择文字点。转义点的另一种方法是将其放入字符类中:.\.[.]
  4. 非连续性更棘手。您将需要查找有关否定前瞻断言(或一般的前瞻断言)的更多信息。

所有粗体字都是您可以通过 Google 学习的术语。

于 2013-07-25T22:15:14.230 回答
2

我会按照这些思路说一些话:(/^[a-z0-9]+(\.[a-z0-9]+)*\.?$/假设该行可以以句点结尾)

于 2013-07-25T22:08:31.673 回答
2

如果字符串可能不以句点结尾,请使用此选项:

/^[a-z0-9]+(\.[a-z0-9]+)*$/

或者如果可能的话:

/^[a-z0-9]+(\.[a-z0-9]+)*\.?$/
于 2013-07-25T22:09:24.320 回答
0

这应该是最好的

^([a-z0-9]+\.?)+$
于 2013-07-25T22:22:07.663 回答