Regex - Não funciona em variáveis?!
2 participantes
Página 1 de 1
Regex - Não funciona em variáveis?!
Olá pessoal!
Poucos aqui sabem que eu sou novo na área de programação web - 5 meses apenas - e como todo novato também tenho minhas dúvidas!
Preciso procurar por uma frase dentro de uma string sem me preocupar com um determinado item: O título que fica entre dois pontos :.
Aqui está um exemplo pronto pra ser editado e testado:
Live edit/run: http://jsbin.com/ocukuk/5/
E o mesmo código do link acima:
JS
Poucos aqui sabem que eu sou novo na área de programação web - 5 meses apenas - e como todo novato também tenho minhas dúvidas!
Preciso procurar por uma frase dentro de uma string sem me preocupar com um determinado item: O título que fica entre dois pontos :.
Aqui está um exemplo pronto pra ser editado e testado:
Live edit/run: http://jsbin.com/ocukuk/5/
E o mesmo código do link acima:
- Código:
<p id="demo">Click the button to display the position of the match.</p>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction()
{
var str="joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido Do Shoutbox Ainda:680|"
<!-- Dessa forma eu encontro sem saber do título: "Banido Do Shoutbox Ainda"! -->
var n='Method 1= ' + str.search(/JScript:\/t141-:(.*?):680/i);
<!-- Mas assim não encontra nada!!! -->
var USERNAME = "JScript";
var TOPIC_ID = "\/t141";
var tTitle = "(.*?)";
var post_ID = "680";
var VOTE_ID = '/' + USERNAME + ':' + TOPIC_ID + '-:' + tTitle + ':' + post_ID + '/i';
n += '<br>Method 2= ' + str.search(VOTE_ID);
<!-- OutPut -->
document.getElementById("demo").innerHTML=n;
}
</script>
JS
Re: Regex - Não funciona em variáveis?!
veja se ajuda o exemplo:
- Código:
var str="joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido Do Shoutbox Ainda:680|"
console.log('Method 1 =' + str.search(/JScript:\/t141-:(.*?):680/i))
var USERNAME = "JScript";
var TOPIC_ID = "\/t141";
var tTitle = "(.*?)";
var post_ID = "680";
//se for necessario as opções EX:(gim) você usa assim
var pat2 = new RegExp(USERNAME + ':' + TOPIC_ID + '-:' + tTitle + ':' + post_ID,'i')
console.log('Method 2 =' + str.search(pat2))
//se não for necessario as opções pode usar assim
var pat3 = USERNAME + ':' + TOPIC_ID + '-:' + tTitle + ':' + post_ID
console.log('Method 3 =' + str.search(pat3))
joelson0007- Moderadores
- Time Online : 28d 21h 58m 5s
Mensagens : 373
Data de inscrição : 15/06/2013
Localização : Guarapuava-PR
Re: Regex - Não funciona em variáveis?!
Nossa, simples assim!
Curti!
Edit: Como faço pra incluir essa barra: | na busca?
Exemplo:
JS
- Código:
//se não for necessario as opções pode usar assim
var pat3 = USERNAME + ':' + TOPIC_ID + '-:(.*?):' + post_ID
alert('Method 3 =' + str.search(pat3))
Curti!
Edit: Como faço pra incluir essa barra: | na busca?
Exemplo:
- Código:
var pat3 = USERNAME + ':' + TOPIC_ID + '-:(.*?):' + post_ID + '|'
JS
Re: Regex - Não funciona em variáveis?!
Tá na mão.
- Código:
var str="joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido Do Shoutbox Ainda:680|"
var USERNAME = "JScript";
var TOPIC_ID = "\/t141";
var tTitle = "(.*?)";
var post_ID = "680";
var pat = USERNAME + ':' + TOPIC_ID + '-:' + tTitle + ':' + post_ID + '\\|'
console.log('Method 3 =' + str.search(pat))
joelson0007- Moderadores
- Time Online : 28d 21h 58m 5s
Mensagens : 373
Data de inscrição : 15/06/2013
Localização : Guarapuava-PR
Re: Regex - Não funciona em variáveis?!
Perfeito amigo!
Escolhi a última resposta como a que resolveu o tópico, obrigado!
Abraços,
JS
Escolhi a última resposta como a que resolveu o tópico, obrigado!
Abraços,
JS
Re: Regex - Não funciona em variáveis?!
Amigo me dê mais uma ajuda.
Estou tentando remover a string que encontro, mas de alguma coisa eu estou esquecendo pois não dá certo!
JS
Estou tentando remover a string que encontro, mas de alguma coisa eu estou esquecendo pois não dá certo!
- Código:
var str="joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|"
var USERNAME = "JScript";
var TOPIC_ID = "/t141";
var post_ID = "681";
var pat3 = new RegExp(USERNAME + ':' + TOPIC_ID + '-:(.*?):' + post_ID + '\\|','i');
alert('Search = ' + str.search(pat3));
str = str.replace(pat3, '');
alert('str = ' + str)
JS
Re: Regex - Não funciona em variáveis?!
veja amigo eu cortei porque na string inteira ficou muito complexo:
Acho que se tu realizar alguns ajustes fica da maneira que deseja.
Acho que se tu realizar alguns ajustes fica da maneira que deseja.
- Código:
var str = "joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|"
function replaceMyData(str,user,topic,post,word) {
var data ='';
var pat = new RegExp('('+user + ':' +'\/'+topic + '-:)(.*?)(:'+post+')','i');
var arr = str.split('|');
for (var i in arr) {
data += '|' + arr[i].replace(pat, '$1' + word + '$3')
}
return data;
}
console.log(replaceMyData(str,'JScript','t141','681','teste'));
joelson0007- Moderadores
- Time Online : 28d 21h 58m 5s
Mensagens : 373
Data de inscrição : 15/06/2013
Localização : Guarapuava-PR
Re: Regex - Não funciona em variáveis?!
Testei mas não funcionou corretamente e achei que ficará lento em relação a outra forma que estávamos fazendo, principalmente quando a string for de uns 2MB...
Alguma outra solução? não entendi porque não está identificando completamente...
JS
Alguma outra solução? não entendi porque não está identificando completamente...
JS
Re: Regex - Não funciona em variáveis?!
Pelo que entendi tu quer substituir esta frase, para um determinado tópico post e user
joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|
veja após o script executado:
joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:teste:681|
se não é isso eu entendi errado.
joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|
veja após o script executado:
joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:teste:681|
se não é isso eu entendi errado.
joelson0007- Moderadores
- Time Online : 28d 21h 58m 5s
Mensagens : 373
Data de inscrição : 15/06/2013
Localização : Guarapuava-PR
Re: Regex - Não funciona em variáveis?!
Na realidade eu quero remover a entrada da string, veja:
var str="joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|"
Entendeu?
JS
var str="joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|"
- Código:
var pat3 = new RegExp(USERNAME + ':' + TOPIC_ID + '-:(.*?):' + post_ID + '\\|','i');
[b]str = str.replace(pat3, "");[/b]
Entendeu?
JS
Re: Regex - Não funciona em variáveis?!
- Código:
var str = "joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|"
function replaceMyData(str,user,topic,post) {
var data ='';
var pat = new RegExp('('+user + ':' +'\/'+topic + '-:)(.*?)(:'+post+')','i');
var arr = str.split('|');
for (var i in arr) {
data += '|' + arr[i].replace(pat, '')
}
return data;
}
console.log(replaceMyData(str,'JScript','t141','681'));
no caso o dois || no final da pra arrumar ainda.
A string inteira eu não consegui, mas amanhã vou estudar novamente para ver se acho uma maneira.
joelson0007- Moderadores
- Time Online : 28d 21h 58m 5s
Mensagens : 373
Data de inscrição : 15/06/2013
Localização : Guarapuava-PR
Re: Regex - Não funciona em variáveis?!
Sim, as duas || no final é até fácil de eliminar, mas se eu tiver que remover dentro da string?
Tipo: "joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|"
Ficando: "joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:681|"
Edit: Estou achando que o problema está na sequencia (.*?) que temos que limitar somente a esta área, exemplo:
:Registro de usuário:
Onde acho que está pegando também o restante: 680
Por isso que não está preciso...
JS
Tipo: "joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681|"
Ficando: "joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:681|"
Edit: Estou achando que o problema está na sequencia (.*?) que temos que limitar somente a esta área, exemplo:
:Registro de usuário:
Onde acho que está pegando também o restante: 680
Por isso que não está preciso...
JS
Re: Regex - Não funciona em variáveis?!
é exatamente isso amigo, a string tem um padrão difícil de separar, por isso que eu tive que cortar, mas vou continuar tentando na string inteira.
e quanto a sua pergunta ali.
já vi que tu não quer dessa maneira e prometo que vou parar de citar esse exemplo kkk
e quanto a sua pergunta ali.
- Código:
var str = "joelson0007:/t135-:Registro de usuário:650|JScript:/t141-:Banido do Chat ainda!:680|JScript:/t141-:Banido do Chat ainda!:681"
function replaceMyData(str,user,topic,post) {
var data ='';
var pat = new RegExp('('+user + ':' +'\/'+topic + '-:)(.*?)(:'+post+')','i');
var arr = str.split('|');
for (var i in arr) {
data += '|' + arr[i].replace(pat, '')
}
return data;
}
console.log(replaceMyData(str,'JScript','t141','680'));
já vi que tu não quer dessa maneira e prometo que vou parar de citar esse exemplo kkk
joelson0007- Moderadores
- Time Online : 28d 21h 58m 5s
Mensagens : 373
Data de inscrição : 15/06/2013
Localização : Guarapuava-PR
Re: Regex - Não funciona em variáveis?!
Olá!
Eu executei o exemplo acima e o resultado foi: joelson0007:/t135-:Registro de usuário:650||JScript:/t141-:Banido do Chat ainda!:681|
Ficou duas barras, onde era pra ter ficado somente uma!
Hoje à tarde estou de folga e vou tentar implementar outra forma para a string no intuito de facilitar mais na hora de procurar e substituir...
Mas se você poder tentar outra forma!
Edit: Encontrei uma ótima ferramenta online: http://www.diveintojavascript.com/tools/javascript-regular-expressions-toolkit
Dá pra ver o resultado dos testes de regex na hora!!!
Veja que se for 680 dá certo:
Agora se for 681...
Edit2: Acho que é melhor deixar a string da seguinte forma:
joelson0007:/t135-:650:Registro de usuário|JScript:/t141-:680:Banido do Chat ainda!|JScript:/t141-:681:Banido do Chat ainda!|
Pois assim funciona normalmente com a regex: JScript:/t141-:680:(.*?\|)
E acho até mais organizado, afinal a parte que me importa é: JScript:/t141-:680:
Agora vou fazer testes com a função replace()...
JS
Eu executei o exemplo acima e o resultado foi: joelson0007:/t135-:Registro de usuário:650||JScript:/t141-:Banido do Chat ainda!:681|
Ficou duas barras, onde era pra ter ficado somente uma!
Hoje à tarde estou de folga e vou tentar implementar outra forma para a string no intuito de facilitar mais na hora de procurar e substituir...
Mas se você poder tentar outra forma!
Edit: Encontrei uma ótima ferramenta online: http://www.diveintojavascript.com/tools/javascript-regular-expressions-toolkit
Dá pra ver o resultado dos testes de regex na hora!!!
Veja que se for 680 dá certo:
Agora se for 681...
Edit2: Acho que é melhor deixar a string da seguinte forma:
joelson0007:/t135-:650:Registro de usuário|JScript:/t141-:680:Banido do Chat ainda!|JScript:/t141-:681:Banido do Chat ainda!|
Pois assim funciona normalmente com a regex: JScript:/t141-:680:(.*?\|)
E acho até mais organizado, afinal a parte que me importa é: JScript:/t141-:680:
Agora vou fazer testes com a função replace()...
JS
Re: Regex - Não funciona em variáveis?!
verdade, dessa maneira que fez funcionou legal!
joelson0007- Moderadores
- Time Online : 28d 21h 58m 5s
Mensagens : 373
Data de inscrição : 15/06/2013
Localização : Guarapuava-PR
Re: Regex - Não funciona em variáveis?!
Então, o regex seria muito complexo e poderia penalizar a performance do sistema!
Fiz as devidas alterações no banco de dados e constatei que já está funcionando normalmente, sem importar o título do tópico.
É isso amigo, obrigado pela sua ajuda,
Abraços,
JS
Fiz as devidas alterações no banco de dados e constatei que já está funcionando normalmente, sem importar o título do tópico.
É isso amigo, obrigado pela sua ajuda,
Abraços,
JS
Tópicos semelhantes
» Tipos de variáveis
» Como bloquar variáveis
» Como posso fazer variáveis do fórum funcionar em página personalizada
» Como bloquar variáveis
» Como posso fazer variáveis do fórum funcionar em página personalizada
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|