gpt4 book ai didi

公司名称变化的正则表达式

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

我要求仅在满足以下条件的情况下才接受字符串值:

1) 如果需要可以以特殊字符开头
2) 必须以大写字母开头(即使第一个字符是特殊字符)
3)字符串值不能连续有2个特殊字符(连续)
4)字符串值不能连续有2个空格(连续)
5) 允许使用重音字符(例如:Faddas)
6) 字符串开头或结尾的封闭值是有效的,但必须在括号内(即: (Ltd) )
7) 字符串值中的任何位置都允许使用数字

我有以下正则表达式值:^(\(([^)]+)\))?[\@\#\$\%\&\*\(\)\-\_\+\]\[\'\;\:\?\.\,\!]?\p{Lu}+[\s'-]?\p{L}+(?:[\s'-]\p{L}+)+(\(([^)]+)\))*$

这适用于以下测试值:
Éast-Shipping-ltd
Éast-Shipping(LTD)

但下一个例子失败了:
Éast-123Shipping(LTD)

有没有办法允许数字中间字符串?
我尝试了 [0-9] 变体、[A-Za-z09] 变体和 p{N} 变体,但都无济于事。

非常感谢您的宝贵时间。

最佳答案

这是一个真的讨厌的模式,但我能够稍微简化它并做你想做的事:

^(\(([^)]+)\))?[[:punct:]]?\p{Lu}+(?:[\s'-]?[\p{L}\d]+)+(\(([^)]+)\))*$

有很多有用的速记字符类,包括 [[:punct:]],我用它来替换大量的标点字符类。为了添加包含数字的功能,我将 \p{L} 放在带有 \d 标记的字符类中,它将匹配任何数字(在任何语言中,带有 Unicode 标志)。

Demo on Regex101

关于公司名称变化的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39775023/

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