以下代码不会一直有效。我看过无数的正则表达式示例,但很少涉及多个扩展的使用。
public bool FAQPNFileCheck(string name)
{
if (name.Length > 0)
{
Match match = Regex.Match(name,
@"\\([A-Za-z0-9_-]+)\.(jpg|doc|pdf)$",
RegexOptions.IgnoreCase);
// Here we check the Match instance.
if (match.Success)
{
// Finally, we get the Group value and display it.
string key = match.Groups[1].Value;
return true;
//Console.WriteLine(key);
}
}
if (name == "")
{
return true;
}
return false;
}
答案 0 :(得分:1)
如果您正在寻找类似这样的内容:this_is_not_a_picture.jpg.doc,正如安德烈所问,您在正则表达式中不允许使用文字点(.
)直到结束。
这应该这样做:
\\([A-Za-z0-9._-]+)\.(jpg|doc|pdf)$
答案 1 :(得分:0)
从RightToLeft
Regex r=new Regex(@"([A-Za-z0-9_-]+)\.(jpg|doc|pdf)$",RegexOptions.RightToLeft);
答案 2 :(得分:-1)
好的,毕竟,你想要允许extesions jpg , doc 或 pdf 的文件,对吧?
我们试试这个:
Regex.Match(name, @"^(?i:[A-Z0-9\_\-]+)\.(?i:jpg|doc|pdf)$", RegexOptions.Compiled);
正如 latkin 所指出的那样,如果你打算一次使用这个Regex
对象,那么RegexOptions.Compiled
不是一个好选择,因为实例化它需要更长的时间物体。但是,匹配运行速度会更快,所以如果您要在几个文件上使用它(如我所假设的那样),最好保留它,然后将其保存在Regex
实例中。