【问题标题】:matching a folder path with regex with forward slash将文件夹路径与带有正斜杠的正则表达式匹配
【发布时间】:2022-01-24 10:09:10
【问题描述】:

我有以下正则表达式来匹配文件夹名称。我想要得到的是用字母、数字、点、连字符、下划线和正斜杠匹配字符串,这样字符串不需要以正向存储或点开始或结束:

/^([a-zA-Z0-9_][a-zA-Z0-9.\/_\-])[.a-zA-Z0-9_-]{1,253}[^(.|/|\\)]$/

我需要匹配文件夹名称foo.com/sdsds

但是正则表达式不匹配/

【问题讨论】:

  • 您尝试在正则表达式中实施哪些规则? [^(.|/|\\)] 肯定是用户错误,因为这并不表示“字符串不应以”结尾。此外,此模式不会让您的代码编译,因为该模式中使用的 / 不会在 PHP 中的 /-delimited 正则表达式中转义。
  • / 已被转义。路径不需要以点、/ 或 \ 结尾
  • 我想要得到的是用字母、数字、点、连字符、下划线和正斜杠匹配字符串,这样字符串不需要以正向存储或点开始或结束

标签: regex preg-replace


【解决方案1】:

你可以使用

^(?![\/.])[\w.\/-]{1,253}$(?<![.\/])

请参阅regex demo详情

  • ^ - 字符串开头
  • (?![\/.]) - 不允许 /. 紧邻当前位置
  • [\w.\/-]{1,253} - 1 到 123 位数字、字母、下划线、./- 字符
  • $(?&lt;![.\/]) - 字符串结尾,前面没有 ./

【讨论】:

    猜你喜欢
    • 2013-05-15
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多