Javascript 匹配两种可能性的|或正则表达式的一部分

Javascript 匹配两种可能性的|或正则表达式的一部分,javascript,regex,regex-alternation,Javascript,Regex,Regex Alternation,我们有两种方法来引用同一个系统: tr12345 fr12345 现在我每个变量有一个正则表达式,例如 /?:^^^\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]

我们有两种方法来引用同一个系统:

tr12345 fr12345 现在我每个变量有一个正则表达式,例如

/?:^^^\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
示例输入1:

tr12345

期望输出1:

12345

示例输入2:

fr123456

期望输出2:

123456

我一直在这里玩:
你试图用一种错误的方式来做实际上是或,优先级较低,所以您的正则表达式是…tr或fr…,但您需要…tr | fr

所以你应该在数学表达式中使用like。而正则表达式将是

/(?:^|^\s|[^\/a-zA-Z0-9])(tr|fr)([0-9]+).*$/img
请注意,这也会生成匹配组

但在您的情况下,下一个表达式会更好:

/(?:^|^\s|[^\/a-zA-Z0-9])[tf]r([0-9]+).*$/img

这里的[tf]表示[t,r]

试试有趣的,谢谢。但是如果一个变量超过一个字母,会发生什么情况呢?例如tr12345和kn12345?方括号只匹配单个字符,对吗?或者我可以将两个字符分组到或表达式中吗?我可能太复杂了…@Tiago,或者在这种情况下效果很好。例如,/abaca | cdeba/将abacaba和abcdeba与匹配组“aca”或“cde”匹配,谢谢!这似乎起到了作用,包括使其成为非捕获组:/?:^^^\s^[^\/a-zA-Z0-9]?:tr | fr[0-9]+.$/img