多个正则表达式条件匹配单个

时间:2017-05-16 19:26:32

标签: regex

我必须弄清楚如何编写一个能够匹配4种不同表达式的正则表达式。

  1. 以辅音开头的表达式,然后是元音(不是y),短划线,6位数。
  2. 表达式以1-8位开头,然后是2-4个字符
  3. 一个以5位数开头的表达式,一个常见的,5个以上的数字
  4. 一个以三位数字开头的表达式,一个冒号,两个字符,一个'>' (大于号),7位数。
  5. 如果有人帮我解决这个问题,我真的很感激。我已经在线查看了正则表达式测试人员,但我不确定如何使用它们......

2 个答案:

答案 0 :(得分:2)

你应该尝试自己做。
与此同时,您可以这样看待它。

^(?:[^\WaeiouAEIOU\d_][aeiouAEIOU]-\d{6}|\d{1,8}[a-zA-Z]{2,4}|\d{5},\d{5}|\d{3}:[a-zA-Z]{2}>\d{7})$

扩展

 ^
 (?:
      [^\WaeiouAEIOU\d_] [aeiouAEIOU] - \d{6} 
   |  
      \d{1,8} [a-zA-Z]{2,4} 
   |  
      \d{5} , \d{5} 
   |  
      \d{3} : [a-zA-Z]{2} > \d{7} 
 )
 $

答案 1 :(得分:0)

您可以使用以下正则表达式。确保使用不区分大小写的标志(i)来匹配大写和小写字符:

(?:^[b-df-hj-np-tv-z][aeiou]-\d{6}$)|(?:^\d{1,8}[a-z]{2,4}$)|(?:^\d{5},\d{5}$)|(?:^\d{3}:[a-z]{2}>\d{7}$)

以下是一个实例:https://regex101.com/r/qyRrCz/2

根据你的问题,正则表达式匹配这4个部分:

  1. (?:^[b-df-hj-np-tv-z][aeiou]-\d{6}$)→例如CU-987654BO-062021
  2. (?:^\d{1,8}[a-z]{2,4}$)→例如1BB18273645QZ
  3. (?:^\d{5},\d{5}$)→例如12345,9876535481,01257
  4. (?:^\d{3}:[a-z]{2}>\d{7}$)→例如333:aa>1234567 321:AZ>7777777