正则表达式:使用 or 运算符组合语句

Regular expression: combining statments with or operator

我需要一个正则表达式,大致结合了

的逻辑

?[1-9][0-9]+\s+X|x

X|x+\s*+[1-9][0-9]*

或英文:匹配字母 X(大写或非大写)的模式,前面是一个整数(单个 space 可选) 后跟一个整数(单个 space 可选)

谢谢。

P.S。上面两个单独的正则表达式只是为了说明;还没有真正测试过它们。

这正是您想要的:

(\d\s?[xX]{1}|[xX]{1}\s?\d)

http://regexr.com/

可能不是 best regex

你说的是single space optional所以我用的是\s?。如果您可以有任意数量的空格,请将 \s 替换为 \s* 尝试使用此:

\d+\s?(X|x)|\s?\d+

DEMO

这将有效并符合您的要求: ((X|x)\s*\d+)|(\d+\s*(X|x))

解释:

(
  (X|x) First character must be an 'X' or 'x'
   \s*  Second character can be zero or infinite amount of spaces 
   \d+  Third character has to be one or more digits
)
|  or
(
  \d+   First character has to be one or more digits
  \s*   Second character can be zero or infinite amount of spaces
  (X|x) Third character must be an 'X' or 'x'
)

您快完成了,您需要用括号将其分组为捕获组并处理那些 2 位数字以外的数字。

/([0-9]+\s{0,1}(X|x))|((X|x)\s{0,1}[0-9]+)/g

将其粘贴到 http://regexr.com/ 中进行试用。我测试了它:

X9847 
X 2645
4442 x
x 525521
5254X5541
221 X 266