Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Backreferences в JavaScript Regular Expressions (https://javascript.ru/forum/misc/4480-backreferences-v-javascript-regular-expressions.html)

FiMko 26.07.2009 00:48

Backreferences в JavaScript Regular Expressions
 
Ребята, привет всем!

Кто-нибудь работал с запоминанием найденных с помощью регулярных выражений подстрок в JavaScript (так называемые backreferences)?

Я пробую вот этот код (взято отсюда):
var re = /(\w+)\s(\w+)/;
var str = "Михаил Булгаков";
document.write(str.replace(re, "$2, $1"))

соответственно, ожидаю получить "Булгаков, Михаил", получаю по-прежнему "Михаил Булгаков".

Подскажите, пожалуйста, в чем проблема?

Riim 26.07.2009 04:37

\w = [A-Za-z0-9_]

FiMko 26.07.2009 12:32

Цитата:

Сообщение от Riim (Сообщение 25347)
\w = [A-Za-z0-9_]

Логично, не учёл :) Спасибо!

Если кому-нибудь осталось непонятным, то:
var re = /(\w+)\s(\w+)/i;
var str = "Mikhail Bulgakov";
document.write(str.replace(re, "$2, $1"));
// -> Bulgakov, Mikhail

либо
var re = /([а-я]+)\s([а-я]+)/i;
var str = "Михаил Булгаков";
document.write(str.replace(re, "$2, $1"));
// -> Булгаков, Михаил

Странно, что автор статьи даже не перепроверил свое творчество.

Riim 26.07.2009 13:24

Вместо а-я и модификатора "i" лучше писать А-Яа-я. Например, в Chrome у меня, после очередного его обновления (2.0.172.37), модификатор "i" к русским символам применяться перестал :( .


Часовой пояс GMT +3, время: 07:32.