Я знаю, что JavaScript в RegEx поддерживает только класс границы слов \ b в строках ASCII.Но могу ли я что-нибудь сделать, чтобы он работал с символами UTF-8?
Я прочитал несколько сообщений об этом здесь в stackoverflow и попробовал несколько методов, подобных описанному здесь .
Но я все еще не могу заставить его работать.
У меня есть страница, на которой у пользователя спрашивают его имя.
После того, как он введен в текстовое поле, появится ответвверх, используя часть значения из текстового поля, чтобы приветствовать пользователя, и игнорируя некоторые другие его части.
Если пользователь введет «Меня зовут Джон», ответ будет «Привет, Джон! Niceвстретиться с вами! ".
Это отлично работает на английском языке, но страница будет на нескольких разных языках, которые используют символы, такие как é á ó ñ - ... Как я могу заставить их игнорировать эти символы, когда онине часть имени?
Это то, с чем я работаю:
function myFunction() {
var text;
var answer = document.getElementById("myInput").value.toLowerCase();
answer = answer.replace(/[^a-z0-9çéã\s]/g, "");
answer = answer.replace(/\b(my|name|is|)\b/g, '').trim();
switch(answer) {
case "":
text = "Please type something.";
break;
default:
text = "Hello, " + answer + "! Nice to meet you!";
}
document.getElementById("reply").innerHTML = text;
}
<p>What is your name?</p>
<input id="myInput" type="text">
<button onclick="myFunction()">Go</button>
<p id="reply"></p>
Я пытался .replace(/á|é|ó|\b(my|name|is)\b/g, '')
Но это удаляет эти символы, когда они являются частью слов / имен, а не когда они используются как отдельные слова (что яхочу).
Следуя примеру по этой ссылке, я также попытался:
answer = answer.replace(/(^|[ \n\r\t.,'"+!?-]+)(é|á|ó|ñ|õ|hello|my|name|is)([ \n\r\t.,'"\+!?-]+|$)/g, '$1$3').trim();
Но все равно не работает как положено ...
Как исправитьэто?