Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Удалить кириллицу (https://javascript.ru/forum/dom-window/65706-udalit-kirillicu.html)

rodiony4 04.11.2016 00:19

Удалить кириллицу
 
Здравствуйте
Вставляю в див #marka значение из ячейки текущей строки таблицы
при этом нужно:
убрать кириллицу, которая находится в круглых скобках (вместе со скобками), например: (пустое)
убрать кириллицу+цифры, которые находятся в круглых скобках (вместе со скобками), например: (дд - 2 окна)
убрать кириллицу без скобок, например: с молдингом
если в круглых скобках будет смесь кириллицы/латиницы - убрать вместе со скобками
делаю так:
<div id="marka"></div>

<table id="sf" style="width: 700px;" border="1" cellspacing="0" cellpadding="0">
<tr>
 <td>1</td>
 <td><a href="javascript:void(0)" class="ecodehref">правильно</a></td>
 <td>Audi 80 (SED) (01-04) (пустое) с молдингом (дд - 2 окна)</td>
 <td>79-86</td>
</tr>
<tr>
 <td>2</td>
 <td><a href="javascript:void(0)" class="ecodehref">не правильно</a></td>
 <td>Audi 100 прозрачное (99-04) с молдингом (дд - 2 окна) (номер - vin)</td>
 <td>80-90</td>
</tr>
<tr>
 <td>3</td>
 <td><a href="javascript:void(0)" class="ecodehref">не правильно</a></td>
 <td>стекло Mazda 626 5D HBK прозрачное vin (vin - номер)</td>
 <td>88-92</td>
</tr>
</table>

<script type="text/javascript">
$('.ecodehref').click(function(){
  $('#marka').text($(this).parents('tr').find('td:eq(2)').text().replace(/\([а-яёА-ЯЁ\s\W]+[0-9\s\W]+[а-яёА-ЯЁ]+?\)/g, '')); 
});	
</script>

регулярка справляется с задачей только со значением ячейки первой строки таблицы, во 2 и 3 строке часть кириллицы остается
помогите, пожалуйста, правильно написать регулярное выражение

рони 04.11.2016 01:11

rodiony4,
так?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

  <script>
$(function() {
    $(".ecodehref").click(function(event) {
        event.preventDefault();
        var reg = /\(.*?\)/g,
            rus = /[\u0430-\u044f\u0451]/ig,
            str = $(this).parent().next().text();
        str = str.replace(reg, function(a) {
            return rus.test(a) ? "" : a
        }).replace(rus, "");
        $("#marka").text(str)
    })
});
  </script>
</head>

<body>
<div id="marka"></div>

<table id="sf" style="width: 700px;" border="1" cellspacing="0" cellpadding="0">
<tr>
 <td>1</td>
 <td><a href="javascript:void(0)" class="ecodehref">правильно</a></td>
 <td>Audi 80 (SED) (01-04) (пустое) с молдингом (дд - 2 окна)</td>
 <td>79-86</td>
</tr>
<tr>
 <td>2</td>
 <td><a href="javascript:void(0)" class="ecodehref">не правильно</a></td>
 <td>Audi 100 прозрачное (99-04) с молдингом (дд - 2 окна) (номер - vin)</td>
 <td>80-90</td>
</tr>
<tr>
 <td>3</td>
 <td><a href="javascript:void(0)" class="ecodehref">не правильно</a></td>
 <td>стекло Mazda 626 5D HBK прозрачное vin (vin - номер)</td>
 <td>88-92</td>
</tr>
</table>
<script type="text/javascript">

</script>


</body>
</html>

rodiony4 04.11.2016 01:56

рони, все супер, спасибо!
еще нужно добавить в див значение четвертой ячейки, как есть, без регулярки
добавляю, но не получается
$("#marka").text(str)+' '+$(this).parents('tr').find('td:eq(4)').text()+' г.в.';

рони 04.11.2016 02:25

rodiony4,
есть строка str, к ней нужно что-то добавить ... а не к обьекту

rodiony4 04.11.2016 02:30

рони, добавляю к строке str, но что-то делаю не так
str = str.replace(reg, function(a) {
	return rus.test(a) ? "" : a
}).replace(rus, "")+' '+($(this).parent('tr').find('td:eq(3)').text()+' г.в.');

рони 04.11.2016 02:47

rodiony4,
$("#marka").text(str+' '+$(this).parents('tr').find('td:eq(3)').text()+' г.в.');

str = str.replace(reg, function(a) {


return rus.test(a) ? "" : a


}).replace(rus, "")+' '+($(this).parents('tr').find('td:eq(3)').text()+' г.в.');

rodiony4 04.11.2016 02:56

рони, большое спасибо, вы мне здорово помогли!

Pavel M. 04.11.2016 19:15

Цитата:

Сообщение от рони
rus = /[\u0430-\u044f\u0451]/ig,

вопрос
почему были использованы не очень наглядные юникодные коды символов
какие-то есть причины не использовать просто
rus = /[а-яё]/ig
?

рони 04.11.2016 19:23

Pavel M.,
особых причин в данном случае нет

Rise 09.11.2016 01:37

Цитата:

Сообщение от Pavel M. (Сообщение 434078)
вопрос
почему были использованы не очень наглядные юникодные коды символов
какие-то есть причины не использовать просто
rus = /[а-яё]/ig
?

Есть, например снять зависимость от кодировки текста скрипта... если допустим поменять кодировку с UTF-8 на Windows-1251 то вместо кириллицы станут кракозябры...


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