【问题标题】:How can check a minimum 3 characters in a given value ,using regular expression如何使用正则表达式检查给定值中的至少 3 个字符
【发布时间】:2011-06-05 13:53:59
【问题描述】:

我有用于检查邮政编码的 javascript 代码

var regexObj =
/^(?=[^-]*-?[^-]*$)[0-9-]*[0-9]$/;

我需要再添加一个条件,即

使用户必须输入至少 3 个字符

任何人都可以说,我该如何修改我的正则表达式

【问题讨论】:

  • 您不需要正则表达式来执行此操作。只需添加一个额外的检查,string.length >= 3 这可能也会比任何正则表达式更快。
  • @kijin 使用正则表达式匹配模式是非常明智的。也许你误读了这个问题,也许我读错了。

标签: javascript regex


【解决方案1】:
/^(?=[^-]*-?[^-]*$)[0-9-]*[0-9]$/

等价于

/^[0-9-]*[0-9]$/

您可以在同一次传递中添加长度检查,而无需前瞻

/^[0-9-]{2,}[0-9]$/

至少 3 个字符,最后一个是数字,其余是数字和 -。见http://www.rubular.com/r/oa9wVxggz0

您可能还想限制第一个字符为-。您可能还需要 3 位数字,但不将 - 算作所需的 3 个字符之一。把这些放在一起,我们会得到:

/^[0-9]-*[0-9][0-9-]*[0-9]$/

http://www.rubular.com/r/Qhl843Txib

【讨论】:

  • +1 用于 rubular 链接,我最喜欢的创建正则表达式的新方法
【解决方案2】:

到底为什么需要正则表达式来检查字符串的长度?

var testString1 = 'this is long enough';
alert(testString1.length >= 3); // true

var testString2 = 'no';
alert(testString2.length >= 3); // false

【讨论】:

  • 我能想到的最简单的原因是,如果他不想添加额外的检查,因为他已经在做 RegEx.IsMatch 还不如检查最小长度而不是添加额外的方法打电话。
  • @downvoters:有没有 cmets?说真的,正则表达式是错误的工作工具
  • 仅检查长度的工具错误,但 OP 也匹配模式。
【解决方案3】:

在 HTML5 中,您可以使用 pattern

在您的示例中,您将执行以下操作,其中 3 是最小值,逗号之后的任何内容都是最大值(在您的情况下,您没有最大值):

<input pattern=".{3,}">

【讨论】:

    【解决方案4】:

    您确定这是用于检查“邮政编码”(美国独有)吗?
    维基百科:“邮政编码是美国邮政服务 (USPS) 自 1963 年以来使用的邮政编码系统。ZIP 一词是区域改进计划的首字母缩写词,[1] 以大写字母正确书写,被选中表明当发件人使用邮政地址中的代码时,邮件的传输效率更高,因此速度更快。基本格式由五个十进制数字组成。在 1980 年代引入的扩展 ZIP+4 代码包括邮政编码的五个数字代码、连字符和另外四位数字,它们比单独的邮政编码确定更精确的位置。"
    /^(\d{5})(-\d{4})?$/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多