如何在正则表达式中制作 OR 运算符


How to make OR operator in regular expression?

我想要的是这样的东西:

(
[integer OR (ANY but not integer or white-space)]
[(ONE white-space OR NONE)]
[integer OR (ANY but not integer or white-space)]
)

将匹配的字符串示例:99 $ 99$ $ 99 $99

我现在有两个正则表达式:

^[^'d's]('s{0,1})'d+^'d+('s{0,1})[^'d's]

关于如何仅用一个正则表达式替换这两个的任何想法?

在正则表达式中制作 or 的标准方法是管道| (ref)

如果您需要匹配正则表达式中的一个或另一个,则需要将(A|B)与 A= ^[^'d's]('s{0,1})'d+ 和 B= ^'d+('s{0,1})[^'d's]

匹配

结果是^(([^'d's]('s{0,1})'d+)|('d+('s{0,1})[^'d's]))

"|"是正则表达式中的"or"等价物。将它们分组并放置 |介于两者之间。

[^'d's]('s{0,1})'d+|^'d+('s{0,1})[^'d's]

适用于您的示例。

^((?:'d+'s?[^'d's]+)|(?:[^'d's]+'s?'d+))$

试试这个。请参阅演示。

https://regex101.com/r/hI0qP0/2