Почему \w распознает только английские слова в JavaScript regex?

Это Object является коллекцией Laravel. Пожалуйста, обратитесь к документации коллекции. https://laravel.com/docs/5.7/collections#method-random

Вы можете попробовать $course->my_list->random()

9
задан David Koelle 4 December 2009 в 18:11
поделиться

7 ответов

Поскольку \w только символы ASCII соответствий 48-57 ('0 '-'9'), 67-90 (''-'Z') и 97-122 (''-'z'). Еврейские символы и другие специальные символы иностранного языка (например, умляут-o или тильда-n) за пределами того диапазона.

Вместо того, чтобы соответствовать символам иностранного языка (существуют столь многие из них во многих различных диапазонах ASCII), Вы могли бы быть более обеспеченным поиском символов, которые формируют рисунок Ваших слов - пробелы, кавычки и другая пунктуация.

17
ответ дан 4 December 2019 в 06:31
поделиться

Стандарт ECMA 262 v3, который определяет язык программирования, обычно известный как JavaScript, предусматривает это \w должно быть эквивалентно [a-zA-Z0-9 _] и это \d должно быть эквивалентно [0-9]. \s с другой стороны, соответствия и ASCII и пробел Unicode, согласно стандарту.

JavaScript не поддерживает \p синтаксис для соответствия вещам Unicode также, таким образом, нет хорошего способа сделать это. Вы могли соответствовать всем еврейским символам:

[\u0590-\u05FF]

Это просто соответствует любой кодовой точке в еврейском блоке.

Можно соответствовать любому словесному символу ASCII или любому еврейскому символу с:

[\w\u0590-\u05FF]
6
ответ дан 4 December 2019 в 06:31
поделиться

Проверьте это ТАК Вопрос о JavaScript и Unicode. Похож на ответ Jan Goyvaerts, там обеспечивает некоторую надежду на Вас.

Править: Но затем кажется, что все браузеры не поддерживают \p... так или иначе. Тот вопрос должен содержать полезную информацию.

1
ответ дан 4 December 2019 в 06:31
поделиться

Взгляните на http://www.regular-expressions.info/refunicode.html.

Похоже, что нет никакого \w эквивалента для unicode, но можно соответствовать единственным буквам unicode, таким образом, можно создать его.

1
ответ дан 4 December 2019 в 06:31
поделиться

Возможно, \S (непробел).

0
ответ дан 4 December 2019 в 06:31
поделиться

Если Вы - генерирующиеся URL с неанглийскими буквами в нем, можно хотеть пересмотреть.

Если я интерпретирую W3C правильно, URL могут только содержать словесные символы в латинском алфавите.

0
ответ дан 4 December 2019 в 06:31
поделиться

Обратите внимание, что URIs (как надмножество URL) указаны W3C, чтобы только позволить символы US-ASCII. Обычно все другие символы должны быть представлены нотацией процента:

В локальных или региональных контекстах и с улучшающейся технологией, пользователи могли бы извлечь выгоду из способности использовать более широкий диапазон символов; такое использование не определяется этой спецификацией. Закодированные процентом октеты (Раздел 2.1) могут использоваться в URI для представления символов вне диапазона кодированного набора символов US-ASCII, если это представление позволяется схемой или элементом протокола, в котором ссылаются на URI. Такое определение должно указать, что кодировка символов раньше отображала те символы на октеты до того, чтобы быть закодированным процентом для URI.//URI: Универсальный Синтаксис

Который является тем, что обычно происходит, когда Вы открываете URL with non-ASCII символы в браузере, они переводятся в %AB нотацию, которая, в свою очередь, является US-ASCII.

Если бы возможно влиять на способ, которым создается материал, наилучший вариант состоял бы в том, чтобы подвергнуть URL urlencode () функция типа во время их создания.

1
ответ дан 4 December 2019 в 06:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: