限制特定模式的正则表达式字符串长度

时间:2018-05-18 09:40:59

标签: java python regex go

任何人都可以为下面提到的条件建议正则表达式。

  1. 不应仅允许空格(空格)。
  2. 仅当至少存在一个非空白字符时才允许使用空格。
  3. 允许使用任何字符。
  4. 长度应限制为50个字符。
  5. 我在Regex pattern for "contains not only spaces"尝试了这种模式.*[^ ].*。您能否建议如何将其限制为50个字符。

2 个答案:

答案 0 :(得分:1)

我认为正则表达式中的 lookahead 可以提供帮助。

尝试在正则表达式前添加(?=。{0,50} $)。有这样的事情:

(?=.{0,50}$)^.*[^ ].*

如果您不想允许空字符串,可以将{0,50}更改为{1,50}。

答案 1 :(得分:0)

您无法在Go正则表达式模式中使用外观。在Java中,要将非空字符串与0到50个字符匹配,可以使用

s.matches("(?s)(?!.{51})\\s*\\S.*")

模式匹配整个字符串(matches默认锚定匹配)并表示:

  • (?s) - Pattern.DOTALL内联修饰符使.也匹配换行符
  • (?!.{51}) - 在字符串中禁止51个字符的负向前瞻(因此,允许少于51,0到50,等于(?=.{0,50)$
  • \\s* - 0+ whitespaces
  • \\S - 非空白字符
  • .* - 字符串末尾的任何0 +字符。

在Go中,只需使用一些代码即可。导入strings并使用

len(s) <= 50 && len(s) >= 1 && len(strings.TrimSpace(s)) != 0

此处,len(s) <= 50 && len(s) >= 1将字符串长度限制为1到50个字符,len(strings.TrimSpace(s)) != 0禁止空/空字符串。