正则表达式匹配几种类似的字符串格式

时间:2015-10-03 14:22:27

标签: javascript regex string

以这种格式匹配一组字符串的最佳方法是什么:

  • AA99999999 2个固定字符8个数字
  • ABC99999999 3个固定字符8个数字
  • AD999999999 2个固定字符9个数字

  • BA999999999 2个固定字符9个数字
  • BB99999x999 2个固定字符5个数字1个字符3个数字
  • BHA-9999#9 4个固定字符4个数字1个固定字符1个数字
  • BHGD99999 4个固定字符5个数字

对于第一场比赛,我写了一个像这样的正则表达式

[a-zA-Z]{3}\d{8}|([a-zA-Z]{2}\d{9}|[a-zA-Z]{2}\d{8})

这有效,但我不知道第二个。是否有符合这些格式的正则表达式?

3 个答案:

答案 0 :(得分:0)

他们只是更相似:

([a-zA-Z]{2}\d{9}|([a-zA-Z]{2}\d{5}[a-zA-Z]\d{3}|[a-zA-Z-]{4}[a-zA-Z#]\d)

假设弹出'-'的位置[a-zA-Z-]是可以匹配的值组,同样[a-zA-Z#]的{​​{1}}

答案 1 :(得分:0)

很难确切地说出你想要什么,但我把它们组合成两个正则表达式而不是4,因为它更快。我用过\ w或者。你使用[a-zA-Z]的地方,因为很难说出你想要的东西。提供更多信息,我将修改答案。

\w{2}\d{5}.\d{3}|.{4}\d{4}.?\d

答案 2 :(得分:0)

我会使用固定字符来表示规范是这样的情况:如果前3个字符是ABC后跟8个数字而不是widlcard字母,在这种情况下每个案例的模式如下:

AA99999999 2 fixed characters 8 numbers
    AA\d{8}
AD999999999 2 fixed characters 9 numbers
    AD\d{9}
ABC99999999 3 fixed characters 8 numbers
    ABC\d{8}
also
    BA999999999 2 fixed characters 9 numbers
BA\d{9}
    BB99999x999 2 fixed characters 5 numbers 1 character 3 numbers
BB\d{5}x\d{3}
    BHA-9999#9 4 fixed characters 4 numbers 1 fixed character 1 number
BHA-\d{4}#\d
    BHGD99999 4 fixed characters 5 numbers
BHGD\d{5}

var patt1 = /^\w\w[\w\d]{1}[\d\w-]{1}\d{2}[\d\w]{1,4}[\d#]{1}\d+$/;

如果是这种情况,您需要将其中的每一个作为替代方案或进行一些逻辑匹配或迭代每个进行测试,直到找到匹配为止。

或者你的意思是大写字母而不是固定字符?

也许你可以玩这个小提琴。 https://jsfiddle.net/shotgundriver/r812c00v/6/

这是家庭作业问题还是现实世界?