gpt4 book ai didi

名称为 : Any language but first letter must be capital 的正则表达式

转载 作者:行者123 更新时间:2023-12-05 00:54:42 27 4
gpt4 key购买 nike

我需要接受一个名字作为输入,并检查第一个字母是否为大写字母以及字符串末尾是否可以有 1 个空格。

此正则表达式适用于“鲍勃”:

^[A-Z][A-Za-z\p{L}]+[\s,.'\-]?[a-zA-Z\p{L}]*$

一个额外的要求是允许任何语言/字符,然后涉及允许 unicode。

此正则表达式适用于俄语名称:“Афанасий”
^[A-Z\p{L}][A-Za-z\p{L}]+[\s,.'\-]?[a-zA-Z\p{L}]*$

...然而,虽然它允许使用 unicode,但它也允许我输入带有小首字母的“bob”,而 RegEx 允许它通过。

有什么方法可以允许 unicode 并且在第一个字母不是大写时仍然标记它? (使用正则表达式)

我可以进行一些代码更改来解决这个问题,但如果能够在不更改代码的情况下将其全部保留在 RegEx 值中会很好。

最佳答案

任何 Unicode 大写字母都可以与 \p{Lu} 匹配.


^\p{Lu}\p{L}+[\s,.'\-]?\p{L}*$

或者
^\p{Lu}\p{L}+(?:[\s,.'-]\p{L}+)?$

regex demo 1regex demo 2 .第二个正则表达式更精确,因为它不允许尾随空格、逗号等(在 [\s,.'-] 字符类中定义的内容)。

请注意,使用 [A-Za-z\p{L}] 毫无意义。自 \p{L}已经匹配 [a-zA-Z] .

图案详情 :
  • ^ - 字符串开头
  • \p{Lu} - 一个大写的 Unicode 字母
  • \p{L}+ - 一个或多个 Unicode 字符
  • (?:[\s,.'-]\p{L}+)? - 一个或零(可选)序列
  • [\s,.'-] - 一个空格,, , . , '或连字符
  • \p{L}+ - 1 个或多个 Unicode 字母
  • $ - 字符串的结尾。
  • 关于名称为 : Any language but first letter must be capital 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39590563/

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