正则表达式整个字符串的确切长度

时间:2015-12-22 10:45:28

标签: regex

我想匹配一个精确3长度的字符串。我正在使用以下正则表达式

("\\d?[A-Za-z]{2,3}\d?")

这里的字符串在字符串的开头或结尾可以有一个数字,或者字符串可以有3个字母。有没有办法定义匹配字符串的长度,如:

("(\\d?[A-Za-z]{2,3}\d?){3}") // it does not work

我有另一个解决方案。

("(\\d[A-Za-z]{2})|([A-Za-z]{2}\\d)|([A-Za-z]{3})")

但我只想知道是否有任何方法可以定义整个匹配字符串的长度。

2 个答案:

答案 0 :(得分:3)

^.{3}$

如果这不是您的答案,您需要更好地指定它。你有零解决方案而不是几个。你究竟想要匹配什么?举几个例子。

http://www.regexplanet.com/advanced/java/index.html

^(\d[a-zA-Z]{2}|[a-zA-Z]{2}\d|[a-zA-Z]{3})$  

如果你想要那些字母和数字的东西。

如果你希望在没有字符串结束的情况下可以在最后添加额外的东西,那么你可以在之后寻找空间。

  

^(\ d [A-ZA-Z] {2} | [A-ZA-Z] {2} \ d | [A-ZA-Z] {3})\ S

来自评论:

所以它是

^[^\s]{3}\s\d{7}\s.\d{6}

? - ' ^'行的开头,' [^ \ s]'不是空间。 ' {3}'其中三个。 ' \ S'空间。 ' \ d'一个数字。 ' {7}'七个。 ' \ S'空间。 ''一些性格。 ' \ d'一个数字。 ' {6}'那些。

正则表达式基本上只是以编程方式描述您正在寻找的内容。如果你可以正确地形成你想要匹配的问题,那么很容易直接在正则表达式中编写它。

答案 1 :(得分:1)

您的三种解决方案也会匹配更长的字符串。我建议你使用单词边界(\b)或行边界(^$):

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

^([a-zA-Z]{2}\d|\d[a-zA-Z]{2}|[a-zA-Z]{3})$

根据具体用途。

编辑:修正正则表达式,也匹配3位数。