0
votes

faire une exception dans regex

Je peux supprimer toutes les périodes d'une chaîne à l'aide de ce code:

p>

const usage = "I was sent... to protect you.".replace(/\s?\.\.\.\s?/, " ... "); 
const rawUsage = usage.toLowerCase().replace(/\,|\?|\!|\:|\./g,'');  // removes all dots
console.log(rawUsage);


1 commentaires

/ \. {3} / g puis recherche ...


4 Réponses :


1
votes

Votre cas pourrait être résolu de manière simple quelle que soit la regex. Ci-dessous une solution travaillée

p>

const usage = 'I was sent... to protect you.'
const res = usage
  .replace('...', ' ... ')
  .split(' ')
  .filter(word => !!word) // reject empty word ('')
  .join(' ')

console.log(res)


0 commentaires

2
votes

Essayez ceci:

p>

const usage = "I was sent... to protect you."; 
const rawUsage = usage.toLowerCase().split(/\s?\.\.\.\s?/).map((s)=>{return s.replace(/\./g,"");}).join(" ... "); 
console.log(rawUsage);


0 commentaires

2
votes

Vous pouvez correspondre et capturer le motif à trois points et le restaurer dans le résultat si ce groupe correspond, sinon, supprimez la correspondance:

p>

const usage = "I was sent... to protect you.".replace(/\s*\.{3}\s*/, " ... "); 
const rawUsage = usage.toLowerCase().replace(/(\s\.{3}\s)|[,?!:.]/g, (x,y) => y || x );
console.log(rawUsage)


0 commentaires

2
votes

Vous pouvez utiliser des regards aussi. Quelque chose comme: xxx pré>

explication de la regex ci-dessus: strong> p>

  • (? strong> - représente un aspect positif correspondant à un espace blanche ou un caractère de mot avant code >. li>
  • (?: \. {1,2} | \. {4,}) code> strong> - représente une correspondance de groupe non capturant code>. code > DOT 1, 2 fois ou 4 fois ou plus mais pas trois. li>
  • (? = [\ s \ w]) code> strong> - représente un aspect positif à l'avenir affirmant un espace blanche ou un caractère de mots après le code >. li> ul>

    Vous pouvez trouver la démo de la regex ci-dessus dans ici. forte> p>

    p>

    const regex = /(?<=[\s\w])(?:\.{1,2}|\.{4,})(?=[\s\w])/gm;
    const str = `I was sent... to protect you.
    I was sent.. to protect you.
    I was sent.... to protect you.
    I was sent ... to protect you.
    `;
    const subst = ``;
    
    // The substituted value will be contained in the result variable
    const result = str.replace(regex, subst);
    
    console.log(result);


0 commentaires