【发布时间】:2021-06-06 14:59:27
【问题描述】:
有人可以帮我解决以下要求的正则表达式吗?
- 输入应至少为 1 个字符,最多可包含 79 个字符。
- 只有字母和空格
([a-zA-Z ]{1,79}) - 如果长度超过
24个字符,则应至少包含一个空格。
【问题讨论】:
-
^(?=.{1,79}$)(?:(?=.{25})(?=\S*\s)[a-zA-Z ]+|[a-zA-Z ]+)$
标签: regex
有人可以帮我解决以下要求的正则表达式吗?
([a-zA-Z ]{1,79})
24 个字符,则应至少包含一个空格。【问题讨论】:
^(?=.{1,79}$)(?:(?=.{25})(?=\S*\s)[a-zA-Z ]+|[a-zA-Z ]+)$
标签: regex
你可能会使用
^(?:[a-zA-Z]{1,24}|(?=.{1,79}$)[a-zA-Z]* [a-zA-Z ]*)$
模式匹配
^ 字符串开始(?:非捕获组
[a-zA-Z]{1,24} 匹配一个字符 a-zA-Z 1-24 次|或者(?=.{1,79}$) 肯定前瞻断言 1-79 个字符[a-zA-Z]* [a-zA-Z ]* 匹配可选字符 a-zA-Z 后跟一个空格和可选字符 a-zA-Z 和一个空格)关闭非捕获组$ 字符串结束【讨论】:
假设您还想避免前导/尾随/双空格,您可以尝试:
^(?!\S{25,}$|.{80})[a-z]+(?: [a-z]+)*$
^ - 起始线锚点。(?! - 打开负前瞻:
\S{25,}$ - 任何 25 个(或更多)非空白字符,直到结尾。| - 或者:.{80} - 除换行符以外的任何 80 个字符。) - 关闭负前瞻。[a-z]+ - 1+ 个字母。(?: - 打开非捕获组:
[a-z]+ - 一个文字空间,后跟 1 个以上的字母。)* - 关闭非捕获组并匹配 0+ 次。$ - 结束线锚。请参阅demo。
注意:如果您不介意空格,那么您可以使用^(?!\S{25,}$|.{80})[a-z ]+$,本质上也允许像 这样的输入。
【讨论】: