【问题标题】:REGEX - Allow Numbers and . - /正则表达式 - 允许数字和 . - /
【发布时间】:2011-09-02 21:00:38
【问题描述】:

我需要一个正则表达式来只允许数字和 (.-/)

它应该允许这样的事情:

011.235673.98923/0001-12

【问题讨论】:

  • 示例有点松散:您应该澄清是否允许多个相邻的- 或.?如果您有前导/ 或../,会被解释为对根目录或父目录的引用吗? .- 是非法名称吗?等

标签: regex


【解决方案1】:

您要查找的模式,仅匹配带有数字、.、- 和 /: 的字符串

^[0-9\.\-\/]+$

如果您有特定的语言并希望实现这一点,我可能会为您提供帮助。

【讨论】:

  • 这行得通。您不需要转义 / 和 .不过,只是 -.
  • 这是真的。由于不同语言存在不同的怪癖,我通常会过度逃避。
  • 我也注意到了这一点。如果您需要转义 - 或不转义,这些字符的顺序可以更改。这很蹩脚。
【解决方案2】:

您正在寻找^[\d./-]+$

【讨论】:

  • 我认为你也必须摆脱破折号
  • 我修好了。我忘了-。 =(
  • @Tim:实际上我相信它确实匹配-。在这里按原样尝试:regextester.com
  • @Cam:在 Bill 转义破折号之前,它像 a-z 一样用作范围指示符,只有 . 和 / 之间没有范围,因为它们在 ASCII 中是相邻的。顺便说一句,您链接到的网站证实了这一点。
  • 我疯狂地编辑了它。对不起那些家伙。这个绝对有效,不需要转义,不过,我不确定我是否更喜欢转义......
【解决方案3】:

确保它的顺序正确并需要每个部分

^(\d+)(\.(\d+))*(\/(\d+))*-(\d+)$

编辑:忘记添加 /sry

【讨论】:

  • 这与提供的样本不匹配。
【解决方案4】:
^[\d./-]*$

这样做。您使用的是什么正则表达式风格?或许需要对其进行调整。

【讨论】:

    【解决方案5】:

    这样的事情怎么样

    (\d|\.|\-|\/)*

    你得到多少-和.和/有关系吗?顺序重要吗?

    【讨论】:

    • 这比字符类效率低得多。
    • 好吧,可能是这样,但它提供了多样性;)
    【解决方案6】:

    你可以使用这个项目

    [^1-9]
    

    要查看其性能,请参考以下链接 regex101

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      相关资源
      最近更新 更多