正则表达式允许句点(。)

时间:2014-11-16 06:44:18

标签: regex

由于某些原因,我的正则表达式会让句号出现,我怎样才能防止这种情况发生。

规则:

  1. 4-15个字符

  2. 任何字母数字字符

  3. 只要不是第一个或最后一个
  4. 下划线

    [A-Za-z][A-Za-z0-9_]{3,14}

  5. 我不希望“bad.example”用于工作。

    编辑:更改为4-15个字符

4 个答案:

答案 0 :(得分:3)

您的正则表达式将examplebad.example的子字符串匹配。使用anchors来阻止:

^[A-Za-z][A-Za-z0-9_]{1,12}[A-Za-z]$

请注意(正如你的正则表达式)这个正则表达式也会阻止数字在第一个和最后一个位置匹配 - 如果它们应该被允许(根据你的规范),只需在字符类的末尾添加0-9

答案 1 :(得分:1)

^[A-Za-z][A-Za-z0-9_]{3,14}$

试试这个

答案 2 :(得分:1)

它与bad.example不匹配,但仅与example匹配,因为正则表达式允许从4到15的字符。请参阅此处。

http://regex101.com/r/xV4eL5/5

要防止它,您需要匹配整个输入而不是进行部分匹配。请设置^起始锚点和$结束锚点。 使用

\A[A-Za-z0-9][\w]{1,12}[A-Za-z0-9]\Z

答案 3 :(得分:1)

这将匹配开头和结尾的任何字母数字。在中间,它将接受一个最多十二个字母数字,包括下划线:

^[a-zA-Z\d]\w{1,12}[a-zA-Z\d]$