我正在尝试构建一个 PHP 正则表达式模式,该模式将:
- 如果测试字符串是“login/openid”,则捕获“openid”
- 如果测试字符串只是“login”(没有尾部斜杠),则将使用“index”。
登录(?:/(.+))? - 这将捕获斜线之后的任何内容,并且效果很好。
但是,如果模式不匹配(即没有斜杠),我可以构建一个正则表达式来提供“默认”值吗?
请不要提出解决方法,我只需要一个模式(如果可能的话)。
谢谢!
最佳答案
不,正则表达式只能匹配现有文本,而不能“发明”新文本(例如默认值)。所以你不能单独使用正则表达式来做到这一点。
您需要一个 if
语句:
if (preg_match('%login(?:/(.+))?%', $subject, $regs)) {
$result = $regs[1];
} else {
$result = "index";
}
关于php - 如果模式不匹配,正则表达式中的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5299004/