I-NOZex Posted March 10, 2014 Report Share Posted March 10, 2014 Em seguimento a outro topico, precisava de ajuda a criar um regex para uma mascara de formatação para o plugin http://digitalbush.com/projects/masked-input-plugin/ tal mascara, tem de permitir valores como o seguinte exemplo: 1.0 5.23 11.4 11.99 230.00 o valor obrigatorio a preencher terá de ser o 1º numero antes da ponto, bem como o 1º após a ponto(caso nao seja possivel, ambos digitos apos o ponto) Obrigado B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
bioshock Posted March 10, 2014 Report Share Posted March 10, 2014 Experimentaste o regex do outro tópico? Link to comment Share on other sites More sharing options...
I-NOZex Posted March 10, 2014 Author Report Share Posted March 10, 2014 sim, o problema é que o regex tem de ser para um unico caractere, funciona como "placeholder", assim numa definição meia leiga funciona como nesta resposta aqui http://stackoverflow.com/a/4788800/1869192 saberias-me indicar um pequeno snippet jquery que fizesse igual aqui: http://plentz.github.io/jquery-maskmoney/ por defeito o placeholder tá 0.00, mas se escrever 11.11 por exemplo, ele vai incrementando o "valor" disponivel nas unidades... não queria tar a incluir um plugin para usar so naquele sitio... ou entao, em ultimo caso, um plugin que resolva aquele problema das horas, bem como aqui com os nr decimais... B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
bioshock Posted March 10, 2014 Report Share Posted March 10, 2014 Não faço ideia..na melhor das hipóteses vês o código .js desse plugin. No entanto, não acho que te devas dar a esse trabalho, podes fazer algo assim http://jsfiddle.net/WXZ88/. Se vais guardar esta informação na base de dados, caso a graves com o tipo float nem tens que te preocupar com as casas decimais.. Link to comment Share on other sites More sharing options...
I-NOZex Posted March 11, 2014 Author Report Share Posted March 11, 2014 (edited) sim, fica em float isto é meramente para guiar o utilizador... não é uma questao de validação, isso ja tá feito, é uma questão de formatação meramente... mas obrigado pela a ajuda 🙂 já agora, sabes indicar algo para entender REGEX? é que apesar de volta e meia ter de usar, nao sei como criar, maior parte das vezes vou ao regexlib... mas gostava de entender... Edited March 11, 2014 by I-NOZex B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
I-NOZex Posted March 11, 2014 Author Report Share Posted March 11, 2014 (edited) Uma outra questao no mesmo tema pelo qual nem acho necessario abrir novo topico tenho inputs com o attr name no formato Music[links][0] Music[links][1] e por ai precisava de um regex para obter o numero... achas que podes ajudar? tenho um, que nao funciona para um .match em jquery, mas funciona para .replace mas acho que nao está totamente correto, pois se por exemplo (o que nao será o caso) eu tivesse Music[links][1][2] ele faz "match"... /(\[\d+\])(\[(\d)\]){0,1}.*/ obrigado bioshock edit: meti-me a inventar, e este ja funciona para o tal match e retorna um objeto, que na 2a posiçao (index1) tem o numero sem os [ ] mas duvido que teja correto, se me puderes corrigir nisto, e se pudesses indicar algo que ensine como criar regex, ficava muito grato 😄 /\[(\d+)\]/ Edited March 11, 2014 by I-NOZex B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
bioshock Posted March 11, 2014 Report Share Posted March 11, 2014 já agora, sabes indicar algo para entender REGEX? é que apesar de volta e meia ter de usar, nao sei como criar, maior parte das vezes vou ao regexlib... O site que eu utilizo é este: http://regex101.com/ Consoante o que escreves no Regex ele ajuda-te a perceber os passos. formato Music[links][0] Music[links][1] e por ai precisava de um regex para obter o numero... achas que podes ajudar? Vê se vai de encontro ao que pretendes. ^.*?\[[^\d]*(\d+)[^\d]*\].*$ Testa no site que te indiquei. Neste caso em específico, talvez o melhor até nem fosse regex mas sim split da informação por brackets, porque podes ter vários números. Link to comment Share on other sites More sharing options...
I-NOZex Posted March 12, 2014 Author Report Share Posted March 12, 2014 mas é esse o problema, mesmo que tenha mais numeros, só importa o primeiro match not match Musica[12][0][4] B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
bioshock Posted March 12, 2014 Report Share Posted March 12, 2014 Se só importa o primeiro, o regex que te dei serve. http://regex101.com/r/hZ2vP2 Link to comment Share on other sites More sharing options...
I-NOZex Posted March 12, 2014 Author Report Share Posted March 12, 2014 sim, obrigado mas nao será desnecessariamente grande? é que aqele que apresentei tbm retorna apenas o que quero... soque como não entendo assim regex como deve ser, nao sei bem a diferença, consegues explicar? obrigado B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
bioshock Posted March 12, 2014 Report Share Posted March 12, 2014 (edited) Percebes os básicos? ^ => Início da linha .*? => Encontra qualquer texto EXCEPTO novas linhas \[ => Significa que deve encontrar o primeiro caractér começado por '[' \d => Encontra dígitos apenas de 0 a 9 \d+ => Encontra dígitos de 0 a 9 MAS uma ou mais vezes \] => Encontra o caractér mais próximo ']' $ => Fim da linha No teu regex não incutes um limite, pelo que ele vai buscar todos os brackets. Para além do mais, dizes-lhe '{0,1}', basicamente estás-lhe a dizer que só pode ter no máximo 1 casa, o que está errado..(a menos que assim o queiras), mas para isso podes substitui por: \d. Enquanto escrevo este tópico e, olhando melhor para o meu regex, de facto está muito grande para o que se pretende. Uma solução mais clean http://regex101.com/r/rZ9kM5 Se tentarmos adaptar o teu regex, incutindo-lhe limites, ficará muito mais leve: ^.*?\[([0-9]{0,1})].*$ É válido para apenas 1 (uma) casa de 0 a 9. Portanto, tendo o seguinte input: Música[15][0][2] > 15 => Não válido > 0 => Válido => ele apanha este valor ^.*?\[([0-9]{0,2})].*$ > 15 => Válido => ele apanha este valor Outra coisa que deves ter em atenção, é que isto [0-9]{0,2} é diferente disto ([0-9]{0,2}). Basicamente, formas um grupo com os parêntesis curvos e dizes-lhe que ambos se devem complementar. Por fim, .*$ significa que ele deve parar assim que encontrar o que deseja. Portanto, se optares por apenas colocar $ ele vai percorrer toda a string e fixar-se no último elemento. Exemplo prático: Música[15][0][2] ^.*?\[(\d+)].*$ => 15 => Stop => output 15 ^.*?\[(\d+)]$ => 15 ... => 0 ... => 2 => Stop => output 2 EDIT: Quando se clica no link acima, ele coloca um "." à frente do URL, pelo que o link fica inoperacional..elimina esse "." no final do URL e já vês o regex clean. Edited March 12, 2014 by bioshock Link to comment Share on other sites More sharing options...
I-NOZex Posted March 12, 2014 Author Report Share Posted March 12, 2014 muito obrigado pela explicaçao! confesso que mal sabia os basicos, mas com o que explicaste ja fiquei a entender muito melhor! Obrigado pelo tempo que perdeste a explicar-me, foi-me util! e heide rever o topico quando tiver mais tempo, que agora foi ler mais por alto, mas vou analizar depois tudo que falaste, mas desde ja, obrigado! B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now