正则表达式以匹配字母数字,后跟下划线和后面的字母数字

时间:2018-06-20 08:55:47

标签: regex

我对正则表达式不太擅长,所以我想了解我制作的正则表达式是否可以使用或可以改进。

正则表达式条件:

  1. 最多允许20个字符。
  2. 前3-4个字符应为字母数字。可以是3个字符或4个字符。
  3. 下一个字符应仅是下划线(_)。
  4. 接着还有1-15个字母数字字符。

我做了这样的正则表达式:

^[[:alnum:]]{3,4}(_)[[:alnum:]]{1,15}$

这是一种好习惯还是可以进一步改善?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的表达式正确满足您指定的条件。此外,它还捕获下划线,您无需这样做。因此,您只需编写

^[[:alnum:]]{3,4}_[[:alnum:]]{1,15}$

另外,您已经知道,该表达式与整行匹配,而不仅仅是一行的一部分,因此,如果该行包含空格,则该字符串两端的空白都可能导致您出现问题(参见UNIX / Windows的另一行)结尾)。

What is the difference between ^ and \A , $ and \Z in regex?显示\ A \ z和^ $之间的区别(包括有关\ z和尾随换行符的有趣注释)