Regex 有可能有一个正则表达式与多个表达式匹配吗?

Regex 有可能有一个正则表达式与多个表达式匹配吗?,regex,Regex,我有一个可以采用多种格式的日期: 24-01-12 january 24 2013 etc 有没有办法使用管道或其他方法将两个或多个不同的正则表达式组合成一个正则表达式?我尝试嵌套括号,但这当然不起作用: [regex | regex] 是的,试试这个: (\d\d-\d\d-\d\d)|([a-z]*) // So basically: (regex)|(regex) 这与第一行中的所有单词和日期匹配。 (如果需要非捕获组而不是捕获组,请使用(?:regex)。) 如果您确实将正则表达

我有一个可以采用多种格式的日期:

24-01-12
january 24 2013
etc
有没有办法使用管道或其他方法将两个或多个不同的正则表达式组合成一个正则表达式?我尝试嵌套括号,但这当然不起作用:

[regex | regex]
是的,试试这个:

(\d\d-\d\d-\d\d)|([a-z]*)

// So basically:
(regex)|(regex)
这与第一行中的所有单词和日期匹配。
(如果需要非捕获组而不是捕获组,请使用
(?:regex)
。)


如果您确实将正则表达式放在
[]
中,那么这就是问题所在。

我明白了,非常感谢,我现在就试试看!:)子区域周围不需要任何括号:
\d\d-\d\d-\d\d |[a-z]*
(?:\d\d-\d-\d\d)|(?:[a-z]*)
完全相同。有时您需要的是一个围绕整个交替的组,如果该交替被正则表达式的其他部分包围,例如。g
^(?:\d\d-\d\d-\d\d |[a-z]*)$
@TimPietzcker:Imo,如果这样分组,可读性更高,而且它可以防止容易忽略的问题。所以,你是对的,这是没有必要的,但我认为它可以使正则表达式更容易使用。