正则表达式长度 (0) 或 (7-50)

Regular expression length (0) or (7-50)

这里的正则表达式使用wp-rest-api enpoints 正则表达式所以我有的是

$routes['/dn/settings/update/(?P<password>.{7,50})/(?P<newsletter>\d)'] = array(
    array( array( $this, 'settings_update'), WP_JSON_Server::ALLMETHODS ),
);

我需要帮助的部分是 (?P<password>.{7,50})

现在它接受 7-50 个字符的密码,但我也希望在没有提交密码的情况下进行更新。 IE。 "/dn/settings/update//1"

如何在不使用 .{0, 50} 的情况下执行类似 .{0||7,50} 的操作?

只需将整个模式设为可选即可:

$routes['/dn/settings/update/(?P<password>.{7,50})?/(?P<newsletter>\d)'] = array(
    array( array( $this, 'settings_update'), WP_JSON_Server::ALLMETHODS ),
);