编写RegEx表达式

时间:2008-10-28 16:53:34

标签: regex

想写一份RegEx来验证驾驶执照。

如果它不是以(US,CA,CN)开头,则必须跟随XX,然后使用任意数量的Alpha数字字母。

因此,例如,如果驾驶执照以GB开头,则必须遵循XX GBXX12345363 然而,如果从美国开始,那么我们不关心它后面发生了什么。 USLA039247230

4 个答案:

答案 0 :(得分:3)

记住并不是每个人都熟悉驾驶执照符号,我假设接下来的是精确的规范(当你要求正则表达式时你应该非常精确地做其他人你会得到你不想要的东西):

  • 必须以两个大写字母开头
  • 如果前两个字母是美国,CA或CN,则其余字母必须是字母数字且未指定长度
  • 如果前两个字母不是美国,CA或CN,那么接下来的两个字母必须是X,其余字母必须是字母数字和未指定的长度

    ((US | CA | CN)[A-ZA-Z0-9] + |(小于?!(US | CA | CN))[AZ] {2} XX [A-ZA-Z0-9 ] +)

第一部分:

  • 匹配US,CA或CN
  • 之一
  • 一个或多个字母数字字符

第二部分:

  • 负面观察,不以美国CA CN开头
  • 有两个大写字母
  • 有两个X字符
  • 一个或多个字母数字字符

它匹配第一部分或第二部分

答案 1 :(得分:0)

/^(?:(?:US|CA|CN)\w+|[[:alpha:]]{2}XX\w+)$/

我不确定是否可以进行更多验证,但这是我从你所写的内容中获得的,而不是你的例子(这似乎暗示了四个字母后跟数字)。

答案 2 :(得分:0)

如果您的正则表达式库允许,您可以使用Look Behind功能。

答案 3 :(得分:0)

/^((US|CA|CN)[a-zA-Z\d]*|[a-zA-Z]{2}XX[a-zA-Z\d]*)$/