我们有两种方式可以引用同一个系统:
现在我每个变体都有一个正则表达式,例如
/(?:^|^\s|[^\/a-zA-Z0-9])tr([0-9]+).*$/img
/(?:^|^\s|[^\/a-zA-Z0-9])fr([0-9]+).*$/img
这很好用,但我认为将两者结合起来会更有效率。我从其他文章中看到,您可以使用替换|
来匹配变体。我需要在" tr"之后重复正则表达式。如果我试图匹配两者?
例如,这是可能的吗?
/(?:^|^\s|[^\/a-zA-Z0-9])tr|fr([0-9]+).*$/img
示例input1:
tr12345
所需的输出1:
12345
示例input2:
fr123456
所需的输出2:
123456
我在这里玩过它: https://regex101.com/r/FUCmv0/2
答案 0 :(得分:1)
你试图以错误的方式做到这一点。 ' |'实际上是OR,并且具有低优先级,所以你的正则表达式是... tr或fr ...,但你需要......(tr | fr)......
所以你应该使用()(就像在数学表达式中一样)。正则表达式将是
/(?:^|^\s|[^\/a-zA-Z0-9])(tr|fr)([0-9]+).*$/img
注意()也会产生匹配组。
但在你的情况下,下一个表达会更好:
/(?:^|^\s|[^\/a-zA-Z0-9])[tf]r([0-9]+).*$/img
此处[tf]
表示" [t,r]"