【发布时间】:2023-04-10 04:29:01
【问题描述】:
所以我有以下要求:
- a-z 或 A-Z 之间的任何字母
- 第一个字符必须是字母
- 不允许使用数字字符
- 除了这三个之外,不允许使用特殊字符:.-'
- 它们只能在字母之间
到目前为止,为了解决这个问题,我得到了以下 2 个正则表达式:
^[a-zA-Z][a-zA-Z ]*$
这是为了解决点 1,2,3
(?<=[a-zA-Z])[.\-'](?=[a-zA-Z])
这是解决第 4,5 点
测试用例可以是这样的词:
- abc(通过)
- abc(通过)
- abc'(失败)
- abc '(失败)
但是我无法将它们结合起来。我已经尝试过,但没有得到预期的结果。有什么想法吗?
【问题讨论】:
-
^[a-zA-Z]+(?:[-.'][a-zA-Z]+)*$ -
谢谢!为了快速响应
-
您的问题是“任何字母”。 [a-zA-Z] 将不匹配重音语言,例如德语。如果您的正则表达式提供支持,最好使用 Unicode 类别 \p{L}(或 \p{Lu}、\p{Ll})。
标签: regex