PHP Windows 目录的正则表达式 - preg_match
PHP Regex for Windows Directory - preg_match
我需要根据 Windows 验证目录的用户文本条目,没有排序的目录选择器,它只是一个文本字段。
我使用 http://regex101.com/ 编写了以下正则表达式,它足以满足我的需要:
^[a-zA-Z]\:[\/,\].{1,}
这将匹配例如在线工具中的以下目录:
C:/Users/Charlie/Dropbox
D:/Users/Bob/Quotes
F:/Quotes
问题是,在我的应用程序中使用它时,preg_match
与以上任何一项都不匹配。它不 return 真,preg_last_error()
returns 0
也表示假 return 值。
使用的确切代码是:
if(preg_match('/^[a-zA-Z]\:[\/,\].{1,}/', $directory)) { }
非常感谢任何帮助。
您需要在此处使用四重反斜杠来匹配文字反斜杠:
if(preg_match('/^[a-zA-Z]\:[\/,\\].{1,}/', 'C:/Users/Charlie/Dropbox')) {
// ^^^^
否则,反斜杠只是对 ]
进行转义,这会破坏正则表达式字符 class.
请注意,您可以只使用 +
量词代替 {1,}
,这意味着 1 次或多次出现 ,并且您不必转义冒号.
我也不明白为什么你在字符class中有一个逗号,该字符被视为文字。我认为您只想将 \
或 /
与 [\/,\\]
匹配?然后,整个正则表达式看起来像
'/^[a-zA-Z]:[\/\\].+/'
我需要根据 Windows 验证目录的用户文本条目,没有排序的目录选择器,它只是一个文本字段。
我使用 http://regex101.com/ 编写了以下正则表达式,它足以满足我的需要:
^[a-zA-Z]\:[\/,\].{1,}
这将匹配例如在线工具中的以下目录:
C:/Users/Charlie/Dropbox
D:/Users/Bob/Quotes
F:/Quotes
问题是,在我的应用程序中使用它时,preg_match
与以上任何一项都不匹配。它不 return 真,preg_last_error()
returns 0
也表示假 return 值。
使用的确切代码是:
if(preg_match('/^[a-zA-Z]\:[\/,\].{1,}/', $directory)) { }
非常感谢任何帮助。
您需要在此处使用四重反斜杠来匹配文字反斜杠:
if(preg_match('/^[a-zA-Z]\:[\/,\\].{1,}/', 'C:/Users/Charlie/Dropbox')) {
// ^^^^
否则,反斜杠只是对 ]
进行转义,这会破坏正则表达式字符 class.
请注意,您可以只使用 +
量词代替 {1,}
,这意味着 1 次或多次出现 ,并且您不必转义冒号.
我也不明白为什么你在字符class中有一个逗号,该字符被视为文字。我认为您只想将 \
或 /
与 [\/,\\]
匹配?然后,整个正则表达式看起来像
'/^[a-zA-Z]:[\/\\].+/'