gpt4 book ai didi

java - 在正则表达式中设置最小和最大字符

转载 作者:IT老高 更新时间:2023-10-28 20:57:53 26 4
gpt4 key购买 nike

我写了一个 regular expression匹配任意数量的字母,字母之间有任意数量的单个空格。我希望该正则表达式也强制执行最小和最大字符数,但我不确定如何执行(或者是否可能)。

我的正则表达式是:

[A-Za-z](\s?[A-Za-z])+

我意识到它只匹配围绕一个空格的两组字母,所以我稍微修改了它以解决这个问题。原来的问题还是一样。

有没有办法强制最少三个字符,最多 30 个字符?

最佳答案

是的

就像 + 表示一个或多个你可以使用 {3,30} 来匹配 3 到 30

例如 [a-z]{3,30} 匹配 3 到 30 个小写字母

来自 documentation of the Pattern class

X{n,m}    X, at least n but not more than m times

在您的情况下,匹配 3-30 个字母后跟空格可以通过以下方式完成:

([a-zA-Z]\s){3,30}

如果您需要尾随空格,如果不需要,您可以使用:(2-29 倍字母+空格,然后是字母)

([a-zA-Z]\s){2,29}[a-zA-Z]

如果您想将空格算作字符,则需要将该数字除以 2 得到

([a-zA-Z]\s){1,14}[a-zA-Z]

如果尾随空格是可选的,您可以将 \s? 添加到最后一个空格。这些都在 RegexPlanet 上进行了测试

如果您希望整个字符串的总长度在 3 到 30 个字符之间,您可以在 RegExp 的开头添加 (?=^.{3,30}$) 和消除其他尺寸限制

说了这么多,老实说,我可能只是测试 String.length 属性。它更具可读性。

关于java - 在正则表达式中设置最小和最大字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15288519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com