【问题标题】:Regular expression lookfroward greedy正则表达式lookfroward贪心
【发布时间】:2014-11-03 21:29:38
【问题描述】:

请帮我为包括数字在内的字符串创建一个正则表达式。

我必须解析12341234567,但我不必找到1232:1233s 之类的东西。

我试过了

/[0-9]*/

但是这个正则表达式从字符串1233s 中匹配1233,但万一没有。

【问题讨论】:

  • /^[0-9]+$/ 会命中仅包含数字的字符串。在小数范围内添加一个点

标签: javascript regex


【解决方案1】:

尝试负前瞻:

/^\d+(?!:)$/

说明:

  • \d+ 匹配一个或多个数字
  • (?!:) 后面没有冒号。

更仔细地查看问题,并假设 : 不是您想要阻止匹配的唯一字符(谢谢 MikeW),您应该使用更简单的正则表达式:

/^\d+$/

【讨论】:

  • /^\d+$/ 不够吗?
  • @MikeW 看起来我完全想多了!你当然是对的。谢谢你非常匹配!
【解决方案2】:

考虑使用parseInt 函数而不是正则表达式:

parseInt("1233s")
1233
parseInt("1232:")
1232

【讨论】:

    【解决方案3】:

    试试这个:

     /[\d]+/
    

    希望一切顺利

    【讨论】:

    • 这将失败,原因与 OP 的原始正则表达式失败的原因完全相同:它匹配字符串中的任何数字序列,无论它们周围有什么。
    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多