在 RegEx 中,至少需要一个 a-z 字符,但可选其他字符
In RegEx, require at least one a-z character, but optional other characters
我正在尝试编写一些 需要 至少 一个 a-z
字符的正则表达式,但是它还可以选择包含 0-9_-
个字符。
我最初是从下面开始的,当时所有字符都是可选的,只要它至少包含其中一个:
add_rewrite_rule('for-sale\/([a-z0-9_-]+)\/?$', 'index.php?pagename=for-sale&search_slug=$matches[1]', 'top');
但后来我需要更改它,因此要求 至少 一个 a-z
存在,但其他字符是可选的。
我尝试了下面的方法,但不幸的是,这显然只有在这些其他字符 在 a-z
字符之后才有效:
add_rewrite_rule('for-sale\/([a-z]+[0-9_-]*)\/?$', 'index.php?pagename=for-sale&search_slug=$matches[1]', 'top');
我需要这些可选字符能够添加到前面,附加到 a-z
个字符之间;如何让他们在前面很容易,但不确定如何让他们在中间。
有干净的方法吗?
您可以将 ([a-z0-9_-]+)
替换为 ([0-9_-]*[a-z][a-z0-9_-]*)
并使用
add_rewrite_rule('for-sale\/([0-9_-]*[a-z][a-z0-9_-]*)\/?$', 'index.php?pagename=for-sale&search_slug=$matches[1]', 'top');
[0-9_-]*[a-z][a-z0-9_-]*
首先匹配零个或多个数字、下划线或连字符,然后匹配一个小写 ASCII 字母(因此,需要至少出现一次),然后匹配零个或多个数字、小写 ASCII 字母、下划线或连字符。
我正在尝试编写一些 需要 至少 一个 a-z
字符的正则表达式,但是它还可以选择包含 0-9_-
个字符。
我最初是从下面开始的,当时所有字符都是可选的,只要它至少包含其中一个:
add_rewrite_rule('for-sale\/([a-z0-9_-]+)\/?$', 'index.php?pagename=for-sale&search_slug=$matches[1]', 'top');
但后来我需要更改它,因此要求 至少 一个 a-z
存在,但其他字符是可选的。
我尝试了下面的方法,但不幸的是,这显然只有在这些其他字符 在 a-z
字符之后才有效:
add_rewrite_rule('for-sale\/([a-z]+[0-9_-]*)\/?$', 'index.php?pagename=for-sale&search_slug=$matches[1]', 'top');
我需要这些可选字符能够添加到前面,附加到 a-z
个字符之间;如何让他们在前面很容易,但不确定如何让他们在中间。
有干净的方法吗?
您可以将 ([a-z0-9_-]+)
替换为 ([0-9_-]*[a-z][a-z0-9_-]*)
并使用
add_rewrite_rule('for-sale\/([0-9_-]*[a-z][a-z0-9_-]*)\/?$', 'index.php?pagename=for-sale&search_slug=$matches[1]', 'top');
[0-9_-]*[a-z][a-z0-9_-]*
首先匹配零个或多个数字、下划线或连字符,然后匹配一个小写 ASCII 字母(因此,需要至少出现一次),然后匹配零个或多个数字、小写 ASCII 字母、下划线或连字符。