【问题标题】:Multiple Regular Expressions conditions to match a single one多个正则表达式条件以匹配单个条件
【发布时间】:2017-10-16 00:54:35
【问题描述】:

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

  1. 以辅音开头的表达式,然后是元音(不是 y)、破折号、6 位数字。
  2. 以 1-8 个数字开头,然后是 2-4 个字符的表达式
  3. 一个以 5 个数字开头的表达式,一个普通的,另外 5 个数字
  4. 以三个数字、一个冒号、两个字符、一个“>”(大于符号)、7 个数字开头的表达式。

如果有人帮助我解决这个问题,我将不胜感激。我在网上查看了正则表达式测试器,但我不确定如何使用它们...

【问题讨论】:

  • 目前为止你尝试过哪种风格(编程语言)?
  • y 不是元音。确保您的规格正确。
  • 这是非常具体的例子。
  • 你可以使用断言吗?
  • 到目前为止我尝试过的是以下表达式:[^AEIOU] | [1-9]?{8}|[1-9]{5} | [1-8]{3}[-] | [,] | [:] [1-9]?{6} | [1-9]?{5}[A-Z]{2}[1-9]{7}@degant

标签: regex


【解决方案1】:

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

^(?:[^\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} 
 )
 $

【讨论】:

  • 谢谢!是的,我想自己尝试一下,因此我为什么要寻求有关如何解决问题的帮助。
  • 祝你一切顺利。
【解决方案2】:

您可以使用以下正则表达式。确保使用不区分大小写的标志 (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

【讨论】:

  • 谢谢!我会对其进行测试并确认这对于其他想知道的人来说是正确的:)
  • 我对正则表达式很陌生 $ 代表什么?
  • $ 代表字符串结尾,^ 代表字符串开头
  • ^$ 要求字符串仅包含正则表达式模式。例如。 ^abc$ 只会匹配 abc 而不是 1abc2abcdefg
猜你喜欢
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多