如何在正则表达式中创建OR运算符?

时间:2015-06-11 08:59:37

标签: php regex preg-match

我想要的是这样的:

(
[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]

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

3 个答案:

答案 0 :(得分:1)

制作或使用正则表达式的标准方法是管道(A|B)ref

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

结果为PIVOT

答案 1 :(得分:1)

“|”是正则表达式中的“或”等价物。将它们分组并放入|介于两者之间。

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

适用于您的示例。

答案 2 :(得分:1)

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

试试这个。看看演示。

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