Это - то, что я использую:
public static bool IsValidFileName(this string expression, bool platformIndependent)
{
string sPattern = @"^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\..*)(\..+)?$)[^\x00-\x1f\\?*:\"";|/]+$";
if (platformIndependent)
{
sPattern = @"^(([a-zA-Z]:|\\)\\)?(((\.)|(\.\.)|([^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?))\\)*[^\\/:\*\?""\|<>\. ](([^\\/:\*\?""\|<>\. ])|([^\\/:\*\?""\|<>]*[^\\/:\*\?""\|<>\. ]))?$";
}
return (Regex.IsMatch(expression, sPattern, RegexOptions.CultureInvariant));
}
первый шаблон создает регулярное выражение, содержащее недопустимые/недопустимые имена файлов и символы для платформ Windows только. Второй делает то же, но гарантирует, что имя законно для любой платформы.
Насколько мне известно, то, как Google готовит результаты поисковой системы, является секретным и постоянно меняется. Спуфинг различных пользовательских агентов легко, поэтому они могут это сделать. Они также могут, в случае Javascript, фактически отображать частичные или целые страницы. "У них есть команда сравнивающих людей?" Это сомнительно. О стратегиях сканирования Google написано много, в том числе this , но если задействованы люди, их вызывают только в особых случаях. Я даже сомневаюсь в этом: все потраченные силы человека, вероятно, тратятся на настройку движка ползания.
Google просматривает ваш сайт, представляя пользовательский агент кроме googlebot.
См. страницу 11 комиксов Google Chrome , где описывается (даже лучше, чем термины непрофессионала) о том, как инструмент Google может взять схему веб-страницы. Они могли бы использовать эту или подобную технологию для индексации поиска Google и обнаружения маскировки - по крайней мере, это было бы еще одним хорошим применением для нее.