Ungkapan biasa untuk teks pilihan dalam kurungan
P粉949267121
P粉949267121 2024-02-03 21:45:26
0
1
485

Ini kod saya. Ia digunakan untuk menyesuaikan kotak menaip dalam anki:

function main() {
//Script for modifying 'Show Answer' behavior for Input types.
var htmlTextNodes = [];
var innerHTMLText = [];
if (!document.getElementById('typeans')) {
  return;
}
var htmlNodeLength =document.getElementById('typeans').childNodes.length;
var typedAnswer;
var correctAnswer;
var firstBr = null;
var secondBr;

//capture each node to array
for (i = 0; i < htmlNodeLength; i++) {
 
 htmlTextNodes[i] = document.getElementById('typeans').childNodes[i];
 innerHTMLText[i] = document.getElementById('typeans').childNodes[i].innerHTML;
 //locate <br> tags for output change markers
 if (document.getElementById('typeans').childNodes[i].nodeName == "BR") {
  console.log("Runs if BR");
  if (firstBr != null) {
   secondBr = i;
  } else {
   firstBr = i;
  };
 };
};

//If answer is correct, firstBr will still be null, so must set to length of typeans.childNode
if (firstBr == null) {
 firstBr = htmlNodeLength;
};

//assemble typed and correct answer strings
str2 = innerHTMLText.slice(0,firstBr).join("");
var typeParse = str2.replace(/[^\w,éôëçñï]/g,' ');
var typedAnswer = typeParse.replace(/\s/g, '');
var typedAnsDis = str2.replace(/[^a-zA-Z0-9,éôëçñï]/g,' ');
var typedUpper = typedAnswer.toUpperCase();

//typedUpper = "KITTEN"

var corr = document.getElementById('correctAnswer');
var str2 = corr.innerHTML;
var correctParse = str2.replace(/[^\w,éôëçñï]/g,'');
var correctAnswer = correctParse.replace(/\s/g, '');

//split alternative answers into array

var getalt = document.getElementById('altmean');
var altmean = getalt.innerHTML.replace(/(\([^)]*\))/g, '').replace(/[^\w,éôëçñï]/g,' ');

altmean += ", ";
altmean += correctAnswer;

var array = altmean.split(",").map(function(item) {
  return item.trim();
});
if (!array.includes(correctAnswer)) {
  array.push(correctAnswer);} 

for ( var i = 0; i < array.length; i++ ) {
    array[i] = "" + array[i].toUpperCase() + "";
    array[i] = "" + array[i].replace(/[/\W, " "]/g,' ');; + "";
    array[i] = "" + array[i].replace(/\s/g, ''); + "";
}

//Modify answer output
if ((array.indexOf(typedUpper) > -1) &&  (!(typedUpper == "" ))) {
 var c = "<div class=\"animated zoomIn\" id='correct'>"+typedAnsDis+"</div>";
 var d = document.getElementById('typeans');
 d.innerHTML =  c;
} else {
if(typedAnsDis == "") {
 var g = "<div class=\"animated shake\" id='empty'>{{Meaning}}"+typedAnsDis+"</div>";
 var h = document.getElementById('typeans'); 
 h.innerHTML =  g;
const div = document.getElementById('empty');
div.innerHTML = div.textContent.split('').filter(char => /^[A-Za-z\s\.,;!?"'-~-éū]+$/.test(char) && !/[^\x00-\x7F]/.test(char)).join('');
} else {
 var e = "<div class=\"animated  flash\" id='incorrect'>"+typedAnsDis+"</div>";
 var f = document.getElementById('typeans');
f.innerHTML =  e;
}
}
};
main();

Andaikan saya mempunyai teks seperti "(teks1) teks2". Saya ingin mencari cara agar skrip menganggap kedua-dua "text1 text2" dan "text2" sebagai jawapan yang betul.

Saya tidak tahu sehingga sekarang

var correctParse = str2.replace(/(\([^)]*\))/g, '').replace(/[^\w,éôëçñï]/g,'');

Hanya pertimbangkan "teks2" sebagai jawapan yang betul

var correctParse = str2.replace(/(\([^)]*\))/g, '').replace(/[^\w,éôëçñï]/g,'');

Hanya "text1 text2" dianggap sebagai jawapan yang betul. Saya tidak dapat mencari cara untuk mengira "text1 text2" dan "text2" dengan betul berdasarkan input saya.

P粉949267121
P粉949267121

membalas semua(1)
P粉156415696

Cuba padankan keseluruhan input /^...$/ dengan kumpulan penangkapan pilihan (?:...)? Untuk teks1 yang mungkin muncul atau mungkin tidak dalam input...

str2.replace(/^((?:\([a-zA-Z0-9]+\)\s+)?[a-zA-Z0-9]+).*$/, )

Lihathttps://regex101.com/r/CulGff/1

>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan