gpt4 book ai didi

java - 正则表达式 - 允许 * 出现在字符串的开头和结尾,并且仅允许 *

转载 作者:行者123 更新时间:2023-12-02 18:04:08 25 4
gpt4 key购买 nike

我需要编写一个正则表达式来验证城市的输入。除字符外,仅允许使用空格,并且 * 充当通配符,因此它可以位于字符串的末尾或开头。 * 字符也应该被允许作为唯一的输入。

接受的字符串:

  • *城市
  • *cit *
  • '*'(仅星号)
  • *城市一

不接受的字符串:

  • **
  • *!@
  • %^&*

我已经写了这个,但它不允许仅 '*" 作为输入。有什么想法吗?'^.*[A-Za-zÀ-ÖØ-öø-ž]{1,34}.*$'

最佳答案

你可以使用

^(?:\*|\*?\p{L}+(?:\h+\p{L}*)*+\*?)$

请参阅regex demo .

详细信息:

  • ^ - 字符串开头
  • (?:\*|\*?\p{L}+(?:\h+\p{L}*)*+\*?) - 两种模式之一:
    • \* - 星号
    • | - 或
    • \*? - 可选星号
    • \p{L}+ - 一个或多个字母
    • (?:\h+\p{L}*)*+ - 一个或多个水平空格的一次或多次重复,后跟零个或多个字母
    • \*? - 可选星号
  • $ - 字符串结尾。

在 Java 中:

bool matched = text.matches("\\*|\\*?\\p{L}+(?:\\h+\\p{L}*)*+\\*?");

关于java - 正则表达式 - 允许 * 出现在字符串的开头和结尾,并且仅允许 *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73700516/

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