【问题标题】:Regex matches in regex101 but not in TypeScript regex test正则表达式在 regex101 中匹配,但在 TypeScript 正则表达式测试中不匹配
【发布时间】:2020-06-16 05:15:59
【问题描述】:

我需要一个匹配 0.0 - 6.0 的数字的正则表达式,它还应该匹配 0,0 - 6,0 这样的逗号,最后但并非最不重要的是它应该匹配 0-6 的数字。

我是正则表达式的新手,因此不介意我的正则表达式是否完全错误。

我当前的正则表达式是 -> /(^[0-5][.|,]\d$)|(^[6][.|,][0]$)|(^[0-6]$)/gms

这匹配 regex101 中的所有情况,但不匹配我的打字稿代码。

在代码中我匹配我的字符串如下:

/(^[0-5][.|,]\d$)|(^[6][.|,][0]$)|(^[0-6]$)/gms.test(stringToTest)

这匹配 0-6 和 0.0-6.0,但不匹配 0,0-6,0。如何改进我的正则表达式,使其如 regex101 所示工作?

提前感谢您的帮助。

【问题讨论】:

    标签: regex typescript


    【解决方案1】:

    你可以使用

    ^(?:[0-5](?:[.,][0-9])?|6(?:[.,]0)?)$
    
    • ^行首
    • (?:非捕获组
      • [0-5] 匹配一个数字 0-5
      • (?:[.,][0-9])? 可以选择匹配 ., 后跟数字 0-9
      • |或者
      • 6 第6场
      • (?:[.,]0)?) 可以选择匹配 .a., 后跟 0
    • $行尾

    Regex demo

    请注意,您不需要字符类[.|,] 中的管道,这意味着匹配管道字符而不是OR。 [6] 不必在方括号之间。

    您不需要 /s 标志,因为该模式确实注意到使用点 . 也应该匹配换行符。

    const regex = /^(?:[0-5](?:[.,][0-9])?|6(?:[.,]0)?)$/gm;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多