我正在使用php处理正则表达式,但我遇到了问题:
我想提出一个条件:如果你遇到了" - "字符,下一个字符必须是大写字符。
我做了研究,发现我们可以使用这样的条件:(?(?= regex)然后| else)
不幸的是,它没有用。
暂时是我的正则表达式:
[A-Z][a-z]+[A-Za-z-]*(?(?=[-])[A-Z])
字符串必须符合以下条件:
目前,使用我的正则表达式,以下结果是匹配的(但不应该):Pilar-ackerman
应该匹配的字符串是:Pilar-Ackermam
有人可以帮助我吗?
评论更新:
像PilAr
这样的字符串是匹配的,不应该:(
我不需要允许多个" - "输入字符串中的符号。
答案 0 :(得分:3)
如果你只需要处理ASCII字母,并且只有2个最大块用-
分隔,你可以使用
^[A-Z][a-z]*(?:-[A-Z][a-z]*)?$
请参阅demo
正则表达式匹配:
^
- 字符串开头[A-Z][a-z]*
- 一个大写的ASCII字母后跟零个或多个小写字母(?:-[A-Z][a-z]*)?
- 一个或零个(由于?
量词)序列...
-
- 连字符[A-Z][a-z]*
- 一个大写的ASCII字母后跟零个或多个小写字母$
- 字符串结尾答案 1 :(得分:0)
您可以使用此模式:
^[A-Z](?:[a-z]+|-[A-Z])*+$