Verifica se string é número no javascript

Já escrevi sobre o typeof do javascript, que retorna o tipo de um objeto no javascript – mas quando estava desenvolvendo algumas coisas do Eu Compraria! Shop eu tinha a seguinte situação: um post por ajax executava uma tarefa, em caso de erro retornaria a mensagem do erro (que poderia variar, de acordo com o erro) em caso de sucesso retornava um ID referente a operação, que eu usaria a partir dali.

Poderia utilizar json para receber um parâmetro success e os outros parâmetros e fazer a verificação do success, mas neste caso optei por algo diferente: verificar se o retorno era numérico (o ID) e prosseguir com o a função, caso contrário seria a mensagem de erro que era exibida para o usuário.

No meu exemplo a data retornada pelo post sempre será uma string (mesmo quando é um ID), portanto o uso do typeof(data) é inútil. Neste caso eu preciso verificar quando uma string é numérica.

 

Verificando se uma string é numérica

A função abaixo testa com expressão regular a string passada como parâmetro e retorna true em caso positivo (string é um número) ou false.

function isNumeric(str)
{
  var er = /^[0-9]+$/;
  return (er.test(str));
}

Update com a sugestão do Aurélio, agora o return é o próprio resultado do teste da regex, sem necessidade do true/false como retorno. Obrigado Aurélio!

Mais uma vez uma expressão regular facilitando nossa vida! 🙂

Como criar um bom XML Sitemap

A nova versão do And After teve algumas mudanças bastante significativas de front-end e back-end, e isso causou uma gigantesca penalização na indexação do Google – deixamos de utilizar o subdomínio www e viramos um domínio no-www classe B (que redireciona tudo que tenha www retirando o subdomínio).

Seria possível manter o subdomínio www funcionando para evitar isso, mas resolvemos assumir o risco pois acreditamos que atualmente não faz sentido seu uso e também evita a possibilidade do conteúdo ser considerado duplicado nos domínios andafter.org e andafter.org.

Se você quer aprender um pouco mais sobre Search Engine Optimization (SEO) recomendo algumas leituras:

Sitemap protocol

Padronização é a palavra que faz a web funcionar de forma organizada e bonita, existem recomendação para criação de sitemaps em XML que são usada por vários motores de busca, incluindo o Google (que sempre foi o buscador que mais trouxe resultados para o And After).

Você pode encontrar a documentação completa e mais informações no sitemaps.org

 

Exemplo de sitemap

Segue um exemplo de sitemap com as especificações do sitemap protocol 0.9:

 

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://www.example.com/</loc>
      <lastmod>2005-01-01</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.8</priority>
   </url>
</urlset>

 

Cada link para o seu site deve ser um tag seguindo a estrutura acima, e as tags filhas são:

  • loc (obrigatório) – a url completa da página, incluindo o protocolo (http:// por exemplo)
  • lastmod (opcional) – a data da última modificação da página, seguindo a formatação do
    W3C Datetime  (exemplod: YYYY-MM-DD)
  • changefreq (opcional) – frequência de atualização da página, pode ter os seguintes valores:

    • always
    • hourly
    • daily
    • weekly
    • monthly
    • yearly
    • never
  • priority  (opcional) – define a importância relativa entre as páginas do seu site, o valor vai de 0.0 a 1.0.

 

Dicas: um sitemap não deve ter mais do que 50.000 links, se for necessário você pode criar mais de um sitemap e criar um índice de sitemaps (leia mais em inglês).

Depois de feito você pode cadastrar seu sitemap no Google Webmaster Tools e isso vai evitar que alguma de suas páginas não seja encontrada pelo Google e com a seleção de prioridade interna (priority) você pode escolher quais urls devem ter preferência sobre as outras do seu domínio no posicionamento das buscas (lembrando que isto não influencia o posicionamento na busca quando comparado com outros domínios, apenas define uma url preferencial quando páginas do seu domínio estão "concorrendo" por uma posição).