正则表达式,用于查找始终包含6个字符的字符串,仅限CAPITALS和数字

时间:2017-11-02 13:53:45

标签: regex

我一直试图使用正则表达式捕获字符串(6个字符),如ABC123(或大写字母和数字的任意组合)。我可以抓住ABCDE11ABCDE甚至AC34FG。只要字符串包含至少1个CAPITAL 1数字,正则表达式就可以正常工作。但ABCDEF123456之类的东西却没有!我错过了什么?我使用的正则表达式是:

(?<=\t)([0-9]+[A-Z]+|[A-Z]+[0-9]+)[0-9A-Z]*(?=\t)

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

(?<=\t)([0-9]+[A-Z]+|[A-Z]+[0-9]+)[0-9A-Z]*(?=\t)模式中,您明确要求至少1个数字后面至少有一个字母(带[0-9]+[A-Z]+)(反之亦然,[A-Z]+[0-9]+)仅在选项卡之间字符。

要匹配由大写ASCII字母或数字组成的选项卡之间的任何6个字符串子字符串,您可以使用

(?<=\t)[A-Z0-9]{6}(?=\t)

请参阅this regex demo

或者,也要在字符串的开头/结尾匹配:

(?<![^\t])[A-Z0-9]{6}(?![^\t])

请参阅another regex demo

答案 1 :(得分:0)

如果我理解正确,你的方法就太复杂了。

/\b[A-Z0-9]{6}\b/

捕获任何(精确)6个字符的字符串,只要存在大写字母或数字或两者。 请注意\b部分作为单词边界,您可以将这些分隔符更改为符合您需要的任何内容。

另一个警告:A-Z只捕获26个大写字符,变音符号或重音字符不会在这里使用,如果您的引擎支持它并且您的数据需要它,请使用类似\p{L}的内容。有关详细信息,请参阅https://www.regular-expressions.info/unicode.html