Affichage des articles dont le libellé est RegExp. Afficher tous les articles
Affichage des articles dont le libellé est RegExp. Afficher tous les articles
Remplace with regExp
| html | "<div> <h1> {{question}} </h1> <ul> <li>{{choice1}}</li> <li>{{choice2}}</li> <li>{{choice3}}</li> <li>{{choice4}}</li> </ul> </div>" |
| randomChoise | 2 |
| newCode | "<div> <h1> {{question}} </h1> <ul> <li>{{choice1}}</li> <li class='selected'>{{choice2}}</li> <li>{{choice3}}</li> <li>{{choice4}}</li> </ul> </div>" |
RegExp
RegExp: \d(?=(\d{3})+\.)
Un nombre suivi de 3 nombres (une ou plusieurs fois) et un point sans les consommer (?= ).
Remplacement: $&
Correspond au chiffre \d qui correspond.
| Match 1 | 0-1 | 1 |
| Group 1 | 4-7 | 332 |
| Match 2 | 3-4 | 5 |
| Group 1 | 4-7 | 332 |
regexp
function normalizeDataKey(key) {
return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);
}
console.log(normalizeDataKey("denisDupont")) // denis-dupont
regexp
- const string = 'Favorite GitHub repos: dupontdenis/bureauwindows dupontdenis/HTML_TD3 v8/v8.dev',
- regex = /\b(?<owner>[a-z0-9]+)\/(?<repo>[a-z0-9\.]+)\b/g;
- for (const match of string.matchAll(regex)){
- console.log(`${match[0]} at ${match.index} with '${match.input}'`);
- console.log(`owner: ${match.groups.owner}`);
- console.log(`repo: ${match.groups.repo}`)
- }
Range
Opérations élémentaires :
console.log(/^0b[01]+$/i.test("0b0011"));
console.log(/^0b[01]+$/i.test("0b0013"));
console.log("0b0011".slice(2));
console.log(parseInt("0011", false ? 2 : 8))
console.log("0o0011".slice(2));
console.log(parseInt("0011", true ? 2 : 8))
console.log()
let reTrim = /^\s+|\s+$/g,
reIsBinary = /^0b[01]+$/i,
reIsOctal = /^0o[0-7]+$/i,
reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
function toNumber(value) {
if (typeof value == 'number') {
return value;
}
if (typeof value != 'string') {
return value === 0 ? value : +value;
}
value = value.replace(reTrim, '');
let isBinary = reIsBinary.test(value);
return (isBinary || reIsOctal.test(value))
? parseInt(value.slice(2), isBinary ? 2 : 8)
: (reIsBadHex.test(value) ? NAN : +value);
}
console.log( toNumber(" 0b0011 "))
code
Range
range(0b011, "10", 1)
[ 3, 4, 5, 6, 7, 8, 9 ]
range(" 0b011 ", " 000005", "NON")
[ 3, 3 ]
range(" 0b011 ", " 000005", " 0o1")
[ 3, 4 ]
code
RegEXP : en action escape
Considérer le code suivant, permettant d'échapper le code HTML (le texte saisie ne doit pas être interprété en HTML).
let p = '<h1>escapeForHTML<h1>';
let regex = /[<&]/gi;
let r = {
'>' : '>',
'&' : '&',
'<' : '<',
}
let f = function(c){
return r[c];
}
Comparer le résultat des deux écritures :
document.body.insertAdjacentHTML("afterbegin",p);
document.body.insertAdjacentHTML("afterbegin",p.replace(regex,f));
let p = '<h1>escapeForHTML<h1>';
let regex = /[<&]/gi;
let r = {
'>' : '>',
'&' : '&',
'<' : '<',
}
let f = function(c){
return r[c];
}
Comparer le résultat des deux écritures :
document.body.insertAdjacentHTML("afterbegin",p);
document.body.insertAdjacentHTML("afterbegin",p.replace(regex,f));
Version compacte !
const escapeForHTML = s => s.replace(/[&<]/g, c => c === '&' ? '&' : '<');
document.body.insertAdjacentHTML("afterbegin",escapeForHTML("<h1> escapeForHTML </h1>"));
document.body.insertAdjacentHTML("afterbegin","<h1> escapeForHTML </h1>");
Version avec Map
let p = '<h1>escapeForHTML<h1>';
let regex = /[<>&]/gi;
let r = new Map([
['>','>'],
['&','&'],
['<', '<'],
]);
let f = c => r.get(c)
document.body.insertAdjacentHTML("afterbegin",p);
document.body.insertAdjacentHTML("afterbegin",p.replace(regex,f));
Inscription à :
Articles (Atom)