如何在正则表达式中将不同的模式合并为单个模式

时间:2016-03-14 12:03:18

标签: regex pattern-matching

我正在尝试使用管道(|)将以下四种模式合并为单一模式,但未获得所需的结果。

情景:

  • 最多7个条目(字母和数字)
  • 应包含4个且仅有4个连续数字(必填)

模式:

([\d]{4}[a-zA-Z]{0,3})
[a-zA-Z]{0,1}[\d]{4}[a-zA-Z]{0,2}
[a-zA-Z]{0,2}[\d]{4}[a-zA-Z]{0,1}
[a-zA-Z]{0,3}[\d]{4})

1 个答案:

答案 0 :(得分:0)

您可以使用

^(?=[a-zA-Z\d]{4,7}$)[a-zA-Z]*\d{4}[a-zA-Z]*$

请参阅regex demo

如果您在默认情况下锚定模式的方法中使用正则表达式模式,^和/或$可能是多余的,但仍然有效。

正则表达式分解:

  • ^ - 字符串开头
  • (?=[a-zA-Z\d]{4,7}$) - 要求字符串仅包含4到7个字母或数字的正向前瞻
  • [a-zA-Z]*\d{4}[a-zA-Z]* - the string should contain 4 digits ( \ d {4}`)可以在零个或多个字母之前或之后
  • $ - 字符串结束。