由于某些原因,我的正则表达式会让句号出现,我怎样才能防止这种情况发生。
规则:
4-15个字符
任何字母数字字符
下划线
[A-Za-z][A-Za-z0-9_]{3,14}
我不希望“bad.example”用于工作。
编辑:更改为4-15个字符
答案 0 :(得分:3)
您的正则表达式将example
与bad.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]$