I-NOZex Posted March 10, 2014 at 07:17 PM Report #548114 Posted March 10, 2014 at 07:17 PM 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
bioshock Posted March 10, 2014 at 08:43 PM Report #548122 Posted March 10, 2014 at 08:43 PM Experimentaste o regex do outro tópico?
I-NOZex Posted March 10, 2014 at 09:12 PM Author Report #548127 Posted March 10, 2014 at 09:12 PM 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
bioshock Posted March 10, 2014 at 10:23 PM Report #548143 Posted March 10, 2014 at 10:23 PM 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..
I-NOZex Posted March 11, 2014 at 11:55 AM Author Report #548187 Posted March 11, 2014 at 11:55 AM (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 at 11:57 AM by I-NOZex B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
I-NOZex Posted March 11, 2014 at 03:20 PM Author Report #548230 Posted March 11, 2014 at 03:20 PM (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 at 03:55 PM by I-NOZex B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
bioshock Posted March 11, 2014 at 04:03 PM Report #548236 Posted March 11, 2014 at 04:03 PM 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.
I-NOZex Posted March 12, 2014 at 11:50 AM Author Report #548379 Posted March 12, 2014 at 11:50 AM 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
bioshock Posted March 12, 2014 at 12:07 PM Report #548383 Posted March 12, 2014 at 12:07 PM Se só importa o primeiro, o regex que te dei serve. http://regex101.com/r/hZ2vP2
I-NOZex Posted March 12, 2014 at 12:23 PM Author Report #548384 Posted March 12, 2014 at 12:23 PM 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
bioshock Posted March 12, 2014 at 03:06 PM Report #548410 Posted March 12, 2014 at 03:06 PM (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 at 03:08 PM by bioshock
I-NOZex Posted March 12, 2014 at 08:52 PM Author Report #548440 Posted March 12, 2014 at 08:52 PM 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
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