Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Веб-программирование > JavaScript / HTML

JavaScript / HTML Создание динамической разметки страниц

Ответ
 
Опции темы
Старый 15.06.2013, 23:17   #1
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,573
Написано 407 полезных сообщений
(для 863 пользователей)
regExp не понимает русь?

Есть инпут, на его изменение висит колбэк(jQuery). Там я вырезаю всё, кроме букв и цифр.

function parseIllegalData(_)
{
  _.val(_.val().replace(/[^a-zA-Zа-яА-Я\s]/g,''))
}
Работает верно, но русские буквы срезает как ножом. Пробовал что-то в стиле
/[^\w\d\sА-я]/g - всеравно не пашет. Кто что может сказать?

ПС на другой странице в этой же системе есть такое выражение:

$(this).val(val.replace(/[^a-zA-Zа-яА-Я_\s.]/g,''));
И здесь все работает отлично. В чем может быть баг?
__________________
(Offline)
 
Ответить с цитированием
Старый 16.06.2013, 04:54   #2
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,247
Написано 2,402 полезных сообщений
(для 6,658 пользователей)
Ответ: regExp не понимает русь?

Регулуярка работает корректно
http://jsfiddle.net/d2Ju2/

Попробуй записать так:
function parseIllegalData(_){
   var 
str _.val();
   
console.log(str);

   
str str.replace(/[^a-zA--яА-Я\s]/g"");
   
console.log(str);

  
_.val(str);

Сразу будет видно где что случилось
__________________
Retry, Abort, Ignore? █
AMD Ryzen 7 3800X 4.3Ghz; 64Gb ram; Nvidia Geforce 1070Ti
AMD Ryzen 7 1700X x8 3.4Ghz; Radeon RX 570
AMD Athlon II x4 2.6Ghz; 8Gb ram; Nvidia Geforce GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 16.06.2013, 05:58   #3
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,861 пользователей)
Ответ: regExp не понимает русь?

Да и для языков используй unicode символы радиусов а не сами символы:

/[^\u0040-\u1FE0\u2C00-\uFFC0 ]+/g
Не уверен что тебе все эти радиусы нужны, но они вроди включают только письменные символы всех языков. Тестировал на китайских, японском, французском, итальянском, русском, португальском и немецком. И он ещё включает "_". Лучше затести или посмотри на Unicode таблицу и включи то что тебе от туда нужно.

Ты пытаешься оставить только письменные символы в строке?
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
Reizel (16.06.2013), St_AnGer (16.06.2013)
Старый 16.06.2013, 15:02   #4
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,573
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: regExp не понимает русь?

Сообщение от moka Посмотреть сообщение
Да и для языков используй unicode символы радиусов а не сами символы:

/[^\u0040-\u1FE0\u2C00-\uFFC0 ]+/g
Не уверен что тебе все эти радиусы нужны, но они вроди включают только письменные символы всех языков. Тестировал на китайских, японском, французском, итальянском, русском, португальском и немецком. И он ещё включает "_". Лучше затести или посмотри на Unicode таблицу и включи то что тебе от туда нужно.

Ты пытаешься оставить только письменные символы в строке?
function parseIllegalData(_)
{
  __ = _.val()
  _.val(__.replace(/[^\u0040-\u1FE0\u2C00-\uFFC0\s0-9]/g,''))
}
Помогло. Мне нужно было оставлять только буквы, цифры и пробелы
__________________
(Offline)
 
Ответить с цитированием
Старый 16.06.2013, 17:46   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: regExp не понимает русь?

Сообщение от Reizel Посмотреть сообщение
function parseIllegalData(_)
{
  __ = _.val()
  _.val(__.replace(/[^\u0040-\u1FE0\u2C00-\uFFC0\s0-9]/g,''))
}
Помогло. Мне нужно было оставлять только буквы, цифры и пробелы

Ух, епрст, как удобно оперировать переменными с именами: _,__,___,____,____,_____ .....
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 16.06.2013, 21:04   #6
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,573
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: regExp не понимает русь?

Сообщение от RegIon Посмотреть сообщение

Ух, епрст, как удобно оперировать переменными с именами: _,__,___,____,____,_____ .....
в рабочем коде не так, не переживай
__________________
(Offline)
 
Ответить с цитированием
Старый 17.06.2013, 01:06   #7
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,643
Написано 5,385 полезных сообщений
(для 15,525 пользователей)
Ответ: regExp не понимает русь?

Раз это http://jsfiddle.net/d2Ju2/ работает а у тебя нет, подозреваю, что ты просрал кодировку js-файла.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 17.06.2013, 16:15   #8
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,573
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: regExp не понимает русь?

Сообщение от ABTOMAT Посмотреть сообщение
Раз это http://jsfiddle.net/d2Ju2/ работает а у тебя нет, подозреваю, что ты просрал кодировку js-файла.
Да вроде нет, в UTF8 всё. Мысль такая приходила уже.
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 11:17.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com