【问题标题】:regex that can end with string end, # or -可以以字符串结尾、# 或 - 结尾的正则表达式
【发布时间】:2021-05-17 00:06:44
【问题描述】:

我正在尝试匹配下面测试字符串中的“FilterField1%3D[value]-FilterValue1%3D[value]”

FilterValue1%3DAT

    #InplviewHash988be455-e1fd-4d20-9eec-665972e3de21=FilterField1%3DRelatedMarket-FilterValue1%3D
    
    #InplviewHashb88353b1-3168-430b-89eb-010843e4b917=FilterField1%3DTrackingRef-FilterValue1%3D-FilterField2%3DAnotherRef-FilterValue2%3D-
    
    #InplviewHashb88353b1-3168-430b-89eb-010843e4b917=FilterField1%3DTrackingRef-FilterValue1%3D#InplviewHash988be455-e1fd-4d20-9eec-665972e3de21=FilterField1%3DRelatedMarket-FilterValue1%3DAT

问题是最后它可以以字符串结尾、表示另一个过滤器的破折号或 # 结尾。我可以捕获的哈希和破折号,但结束字符串使整行匹配在“字段..”之后

这是到目前为止我能想到的正则表达式。

/FilterField1.+FilterValue1.*(#|)/gm

正则表达式:https://regexr.com/5t1lk

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 不确定您到底要什么。如果您希望正则表达式仅在没有任何上下文的情况下完全匹配(例如,/hello/ 只会匹配“hello”而不匹配“ahelloooo”),您可以在结尾斜杠之前使用 $ 并在您之后使用 ^开始斜线。
  • 它必须与上下文匹配,因为在 FilterValue1%3D[possibleValue] 之后可以有一个值,它可以是空的,它可以有该值,并且紧随其后有一个 # 或一个破折号,这就是正则表达式失败。这是 regexr regexr.com/5t1lk 中的正则表达式
  • 不确定你到底想要什么,this 你在找什么?
  • 是的,就是这样。你能把它作为答案吗?非常感谢。

标签: javascript regex


【解决方案1】:
/FilterField1.+?FilterValue1[^-#\n]*/g

因此,懒惰的 .+? - 与贪婪的 .+ 相比 - 将停在下一个 FilterValue1 而不是最后一行。此外,由于我们使用\n,因此我们必须省略多行标志 - 仅适用于表达式中行标记的开始 (^) 或结束 ($)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2016-03-26
    • 2015-08-01
    • 2021-11-24
    • 2021-01-17
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多