【问题标题】:Regular expression for restricting the length限制长度的正则表达式
【发布时间】:2012-07-18 15:49:49
【问题描述】:

我有一个正则表达式

^[\\p{L}\\d._]*\\p{L}+[\\p{L}\\d._]*$ 

接受字母、字母数字和特殊字符,如 .和 _ 。我们可以让这个正则表达式接受总长度最小为 3(包括字符、字母数字等)和最大 15(包括字符、字母数字等)的总长度

谢谢, 巴拉吉。

【问题讨论】:

  • 我会使用if (pass.length() < 3 || pass.length() > 15) invalidLength();

标签: java regex


【解决方案1】:

要额外检查总长度在 3 到 15 之间,您可以使用前瞻:

(?=^.{3,15}$)^[\\p{L}\\d._]*\\p{L}+[\\p{L}\\d._]*$ 

(?=<regex>) 形式的一组检查 <regex> 是否与当前位置匹配,但不向前移动标记。

【讨论】:

  • +1 简单到让人心痛,之前没想到
  • 嗨,我不确定,无论如何它不能接受最小 3 和最大 15,无论如何谢谢
  • @balaji:你能在问题中添加一些应该和不应该工作的测试用例吗?
  • 有效 1. ABC123de(字母数字 - 不分大小写) 2. ABCDEfgh(仅字母 - 不分大小写) 3. Abc_.123(仅允许特殊字符为 _ 和 .)
【解决方案2】:

你试过了吗

^[\p{L}\d._]*\p{L}+[\p{L}\d._]{3,15}

【讨论】:

  • 我试过了,但不知何故它不能接受最小 3 和最大 15
  • 最后应该有一个$
猜你喜欢
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多