22.01.2013, 15:49
|
Интересующийся
|
|
Регистрация: 07.02.2012
Сообщений: 14
|
|
Regexp обрезать короткие слова
Добрый день.
Пытаюсь с помощью regexp вырезать из строки все слова, длина которых меньше 3х символов, а так же все символы, в общем должны остаться в идеале буквы и цифры =)
В данный момент проблема решается таким образом:
"А б,в гд?е ж-з и !кл мно п(р_с)т".replace(/[^A-Za-zА-Яа-я0-9 ]/ig , "").match(/[A-Za-zА-Яа-я0-9]{3,}/ig).join(" ")
Есть ли способ более изящный и короткий?
|
|
22.01.2013, 16:20
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Не совсем понятно что считать словами. В вашем примере
"А б,в гд?е ж-з и !кл мно п(р_с)т"
из гд?е сначала удаляется вопрос, и получается слово длиной 3 буквы. Так и должно быть?
Кста, если в самом выражении уже есть и большие и маленькие буквы, зачем флаг i?
Последний раз редактировалось rgl, 22.01.2013 в 16:34.
|
|
22.01.2013, 16:32
|
Интересующийся
|
|
Регистрация: 07.02.2012
Сообщений: 14
|
|
Да, сначала строка чистится от всего лишнего, потом отбираются необходимые слова
|
|
22.01.2013, 16:42
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
replace( /[^A-Za-zА-Яа-я1-9]+([A-Za-zА-Яа-я1-9]{1,2}[^A-Za-zА-Яа-я1-9]+)*/g, " " )
З.Ы.
Сорри, написал раньше, чем прочитал предыдущее сообщение, ща поправлю
З.Ы.2
Если так?
replace(/[^A-Za-zА-Яа-я0-9 ]/g , "").replace( /[^A-Za-zА-Яа-я1-9]+([A-Za-zА-Яа-я1-9]{1,2}[^A-Za-zА-Яа-я1-9]+)*/g, " " )
Последний раз редактировалось rgl, 22.01.2013 в 16:48.
|
|
22.01.2013, 16:47
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
str="А б,в гд?е ж-з и !кл мно п(р_с)т"
str=(' '+str).split(/(?:\s|,)\S{1,2}(?=\s|,)/i).join('');
alert(str)
Последний раз редактировалось Deff, 22.01.2013 в 22:10.
|
|
22.01.2013, 17:34
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от Дзен-трансгуманист
|
/^[\+\-]?[0-9a-fA-F]+$/.test( string );
|
Вроде Да, (*если только hex всегда идет от начала строки
так чуть проще
var string ='+DD345435'
alert(/^[\+\-]?[0-9A-F]+$/i.test( string ))
Последний раз редактировалось Deff, 22.01.2013 в 17:52.
|
|
22.01.2013, 17:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Дзен-трансгуманист,
alert(/^[+-]?[\da-f]{1,6}$/i.test( "+ddd" ));
|
|
22.01.2013, 17:50
|
|
Профессор
|
|
Регистрация: 28.02.2011
Сообщений: 349
|
|
Сообщение от рони
|
Дзен-трансгуманист,
alert(/^[+-]?[\da-f]{1,6}$/i.test( "+ddd" ));
|
Все правильно, 0-9 можно заменить на \d плюс внутри кв.скобок маскировать не надо, минус не надо если он первый или последний, только не понятно почему {1, 6}, разве цифр не может быть больше шести? Чтобы записать тридцатидвухбитное число, уже нужно 8 цифр, а ведь бывают и 64-битные
|
|
22.01.2013, 18:42
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от rgl
|
replace(/[^A-Za-zА-Яа-я0-9 ]/g , "").replace( /[^A-Za-zА-Яа-я1-9]+([A-Za-zА-Яа-я1-9]{1,2}[^A-Za-zА-Яа-я1-9]+)*/g, " " )
|
буквы ё в русском языке больше нет?
Сообщение от Deff
|
/^\S{1,2}(?=\s|,)|(?:\s|,)\S{1,2}(?=\s|,)/i
|
игнор кейс к чему? )
Сообщение от Дзен-трансгуманист
|
Мне нужно проверить, состоит ли строка полностью из hex-символов (как минимум из одного из них)
|
но при этом данная рега не гарантирует ее валидность
Сообщение от rgl
|
Все правильно, 0-9 можно заменить на \d
|
Сообщение от Дзен-трансгуманист
|
допускаются только ASCII
|
Сообщение от Дзен-трансгуманист
|
А это не захватит другие цифры юникода?
|
захватит
Сообщение от Дзен-трансгуманист
|
простите за мое нубство в регах
|
вот мы и нащупали его слабое место
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
22.01.2013, 20:56
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Сообщение от Дзен-трансгуманист
|
А можно поподробнее?
|
поторопился. Был не прав. Все нормально )
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
|
|