gpt4 book ai didi

php - 根据正则表达式验证字符串

转载 作者:可可西里 更新时间:2023-11-01 00:14:49 25 4
gpt4 key购买 nike

我想用正则表达式验证文件路径。到目前为止,我已经想出了这个:

preg_match('/[^A-Za-z0-9\.\/\\\\]/', $string);

因此,如果字符串包含 A-Z、a-z、0-9、点、\和/以外的任何其他字符,它将返回 1

如果字符串中有两个以上的点,或者如果点在字符串的末尾,我怎样才能让它也返回 1?

我如何才能允许 : 但前提是它作为第二个字符出现并且后跟 \/。例如 c:\file 应该是有效的

最佳答案

对于前两个要求:

preg_match('/[^A-Za-z0-9\.\/\\\\]|\..*\.|\.$/', $string);

如果有两个以上的点,\..*\. 将匹配。如果末尾有一个点,\.$ 将匹配。通过用 | 分隔每个部分(包括您的原始正则表达式),这样正则表达式将匹配任何一个表达式(这称为交替)。

最后一个要求有点棘手,因为如果我理解正确的话,如果有 :,您需要返回 1,除非唯一的冒号是第二个字符并且后面跟着 \/。以下正则表达式(作为 PHP 字符串)应该这样做:

'/:(?!(?<=^[a-zA-Z]:)[\/\\\\])/'

或者结合其他正则表达式(注意我们还必须添加 : 到第一个字符类):

preg_match('/[^A-Za-z0-9\.\/\\\\:]|\..*\.|\.$|:(?!(?<=^[a-zA-Z]:)[\/\\\\])/', $string);

这是对最后一段的解释:

:                  # match a ':'
(?! # but fail if the following regex matches (negative lookahead)
(?<=^[a-zA-Z]:) # the ':' was the second character in the string
[\/\\\\] # the next character is a '/' or '\'
) # end lookahead

关于php - 根据正则表达式验证字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16468660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com