Я хотел бы использовать это регулярное выражение new RegExp ( "\ b" + pat + "\ b" ) в греческом тексте, но метасимвол "\ b" поддерживает только символы ASCII.
Я попробовал XregExp, но мне не удалось решить проблему.
Приветствуются любые предложения.
Я хотел бы использовать это регулярное выражение new RegExp ( "\ b" + pat + "\ b" ) в греческом тексте, но метасимвол "\ b" поддерживает только символы ASCII.
Я попробовал XregExp, но мне не удалось решить проблему.
Приветствуются любые предложения.
Я думаю, что это было полезно для вашего ответа.
<script src="xregexp.js"></script>
<script src="xregexp-unicode-base.js"></script>
<script>
var unicodeWord = XRegExp("^\\p{L}+$");
unicodeWord.test("Русский"); // true
unicodeWord.test("日本語"); // true
unicodeWord.test("العربية"); // true
</script>
<!-- \p{L} is included in the base script, but other categories, scripts,
and blocks require token packages -->
<script src="xregexp-unicode-scripts.js"></script>
<script>
XRegExp("^\\p{Katakana}+$").test("カタカナ"); // true
</script>
Пожалуйста, обратитесь к следующему местоположению: http://xregexp.com/plugins/
Итак, ответ просто, что вы не можете использовать собственные механизмы JavaScript или любую библиотеку, которая использует эти механизмы для соответствия словам так, как вы хотите. Как вы уже сказали, \b соответствует словам. Слова должны состоять из словных символов. И в JavaScript (и на самом деле другие символы регулярных выражений - a-z, A-Z, 0-9 и _. Но многие другие языки просто реализуют метасимвол \b по-разному, как это делает JavaScript.
Ответ "JavaScript не поддерживает Unicode" немного упрощен и на самом деле совершенно неправилен. JavaScript просто не использует юникод для классов символов. Если JavaScript не поддерживает unicode, вы даже не сможете использовать символы Unicode в строковых литералах, и, конечно же, это возможно в JavaScript.
В соответствии с ECMA 262 Standard (ECMAScript) (раздел 15.10.2.6):
[...] Производственный Assertion::\b оценивает, возвращая внутреннее закрытие AssertionTester, которое принимает состояние аргумент x и выполняет следующее:
Абстрактная операция IsWordChar принимает целочисленный параметр e и выполняет следующее:
Это просто показывает, что \b использует Алгоритм "isWordChar" , чтобы проверить, действительно ли то, что вы пытаетесь сопоставить, - это слово. В определении "isWordChar" вы можете увидеть точное определение того, какие символы вернут true для "isWordChar" .
В моем мнении это не имеет абсолютно никакого отношения к используемому набору символов. Здесь нет ни ASCII, ни UNICODE. Это всего лишь 63 символа.