使用preg_匹配的Php模式匹配

使用preg_匹配的Php模式匹配,php,regex,Php,Regex,我正在尝试匹配Php中的某个模式。 我的代码是: preg_match("/(?P<name>\w+)(?P<digit>\d+)/", $custom) preg_match(“/(?P\w+(?P\d+)/”,$custom) 但这行不通。我想要的是,模式可以以任何形式包含这些字符中的任何一个(通常是与URL路径匹配的模式): (a-z) (A-Z) (0-9) (-) 我能做什么?如果您只想检查它是否包含字母、数字、下划线或连字符,则不需要捕

我正在尝试匹配Php中的某个模式。 我的代码是:

preg_match("/(?P<name>\w+)(?P<digit>\d+)/", $custom)
preg_match(“/(?P\w+(?P\d+)/”,$custom)
但这行不通。我想要的是,模式可以以任何形式包含这些字符中的任何一个(通常是与URL路径匹配的模式):

(a-z) (A-Z) (0-9) (-)


我能做什么?

如果您只想检查它是否包含字母、数字、下划线或连字符,则不需要捕获组。只需使用带有量词的单个字符集。并使用
^
$
锚定它以匹配整个字符串

preg_match('/^[-\w]+$/', $custom)

我不会分割数据。因此,使用\w+将匹配字母、数字和下划线。如何添加-(破折号)。这一立场在这里无关紧要。我只想用字母、数字、下划线和破折号检查变量是否是有效的URL路径。如果只是想检查它是否有效,为什么要设置捕获组?关于
/
?我将根据输入执行一些后端操作。所以就把它限制在字母、数字、下划线和破折号上。在那种情况下,这个问题似乎很复杂。为什么您尝试的解决方案如此复杂?