我在验证以下格式时遇到了困难。我希望正则表达式需要满足以下条件。
$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,而是需要修改现有的接受括号()的那个。
答案 0 :(得分:1)
所以这应该匹配(00)filename.jpg
而不是,因为你的正则表达式要求字符串^\w
以字符开头。您可以在开头添加可选的括号\w+
:
^(?:\(\w+\)|\w)[-\w\s.%()[\]]*$
还需要将连字符-
放在字符类的开头或结尾处。否则它会表达一个范围。此外,需要转义字符类中的结束]
。
但可能,您只想查看:
[-\w\s.%()[\]]
如果是,请使用lookahead检查\w
:
^(?=.*?\w)[-\w\s.%()[\]]+$