PHP正则表达式特殊字符

时间:2014-05-16 13:48:50

标签: php regex pattern-matching expression

我在验证以下格式时遇到了困难。我希望正则表达式需要满足以下条件。

$pattern = '/^\w[\w\s\.\%\-\(\)\[\]]*$/u';
$file_name = "(00)filename.jpg";
if(preg_match($pattern,$file_name)){
    echo "Pattern matched";
}else {
    echo "Pattern not matched";
}

我尝试了几种方法。但是,主要的问题是不要编写自己的pregmatch,而是需要修改现有的接受括号()的那个。

1 个答案:

答案 0 :(得分:1)

所以这应该匹配(00)filename.jpg而不是,因为你的正则表达式要求字符串^\w以字符开头。您可以在开头添加可选的括号\w+

^(?:\(\w+\)|\w)[-\w\s.%()[\]]*$

还需要将连字符-放在字符类的开头或结尾处。否则它会表达一个范围。此外,需要转义字符类中的结束]

test at regex101


但可能,您只想查看:

  • 如果字符串中至少有一个单词字符。
  • 该字符串仅由[-\w\s.%()[\]]
  • 组成

如果是,请使用lookahead检查\w

^(?=.*?\w)[-\w\s.%()[\]]+$

test at regex101