我正在使用php处理正则表达式,但是我有一个问题:
我想做一个条件:如果你遇到"-"字符,下一个字符必须是大写字符。
我做了研究,发现我们可以像这样使用条件:(?(?=正则表达式(then|else(
不幸的是,它不起作用。
这是我目前的正则表达式:
[A-Z][a-z]+[A-Za-z-]*(?(?=[-])[A-Z])
字符串必须符合以下条件:
- 第一个字母为大写
- 第二个字母和其他小写字母
- 接受唯一的特殊字符"-">
- 如果满足,"-"后面必须跟一个大写字母
目前,使用我的正则表达式,以下结果匹配(但不应该(:
应该匹配的字符串是: 皮拉尔-阿克曼
有人可以帮我吗?
评论更新:
像 PilAr
这样的字符串是匹配的,不应该:(
我不需要在输入字符串中允许多个"-"符号。
如果您只需要处理 ASCII 字母并且最多只能用 -
分隔 2 个块,则可以使用
^[A-Z][a-z]*(?:-[A-Z][a-z]*)?$
查看演示
正则表达式匹配:
-
^
- 字符串的开头 -
[A-Z][a-z]*
- 一个大写的 ASCII 字母,后跟零个或多个小写字母 -
(?:-[A-Z][a-z]*)?
- 一个或零(由于?
量词(序列...-
-
- 连字符 -
[A-Z][a-z]*
- 一个大写的 ASCII 字母,后跟零个或多个小写字母
-
-
$
- 字符串结尾
您可以使用
此模式:
^[A-Z](?:[a-z]+|-[A-Z])*+$