Как выбирать только числа в string используя Jquery?

У меня есть string, что я не могу применять стили прямо, из-за которых он испытывает недостаток в этикетках: Пример: <>.

Но я нуждаюсь в том, чтобы смочь применять стили ТОЛЬКО по цене (предпочтительно также характер $)

Восток - string:

5,300,000.00$ Характерные Размеры Главный Дом в Nivel*Sala *Столовая *Снаряженная Кухня *Четверть независимого мытья *Две Спальни с Туалетом счет с Чердаком *Два Укомплектованных санузла *Пальма с жетоном *Вертел *Сад *Стоянка для двух...

И это HTML:

 <article>
     <p class="post-meta"> por <span class="author vcard"><a rel="author" title="Mensajes de Hector Jimenez Olmos" href="http://www.bienesraicestequisquiapan.com/author/hejiol/">Hector Jimenez Olmos</a></span> | <span class="published">Sep 7, 2016</span></p>OFERTA DE $ 2,700,000.00 BAJA A $ 2,450,000.00 Características Dimensiones OFERTA!!&nbsp;Casa en dos plantas *Amplio jardín con fuente al frente *Estacionamiento para varios autos, *Sala con chimenea *Bóveda catalana, *Estudio o Recamara *Comedor, *Amplia cocina con barra...               
 </article>

Ощутитесь, что string не является завернутым в этикетку <p>.

И также во всех случаях, у string есть эта структура:

$ (я оцениваю в integer)

Я нуждаюсь в том, чтобы дать ему одинокий стиль по цене, чтобы это выделять

Пример:

font-weight: bold;
color: red;
font-style: italic;

Как возможно добиваться этого используя jquery?

3
задан 08.09.2016, 18:21
3 ответа

Я предлагаю тебе использовать , так как он может упрощать много линий кода, возможно будьте немного тоскливой понимания во время изменения кода.

Объясняя regex /\$\s*(\d){1,3}((\,\d{3})+)?\.\d{2}/g:

Каждое регулярное выражение может или не начинаться с ^ и смоги или не заканчиваться с $.

  1. \$ : Мы убегаем знак $ поскольку я прокомментировал ранее для этого, мы добавляем один \ раньше. Это означает, что он должен инициализироваться с $ текст, который нужно искать.

  2. \s* : Покажи, что он может, или не быть одного или несколького места после знака $.

  3. (\d){1,3} : Показано, что может быть только от 1 до 3 чисел

  4. ((\,\d{3})+)? : Здесь есть несколько вещей

    • (...)? : Покажи, что то, что он содержит внутри скобок, может быть или нет.
    • (\,\d{3})+ : Покажи, что есть запятая, и после его продолжают из-за силы 3 числа. Знак + покажи, что должен быть по крайней мере 1 или больше.
  5. \. : Нужно продолжать из-за силы с точкой.

    Заметь: нужно делать утечку \ чтобы запутывать с ., так как . покажи, что может стоиться любой индивидуальный символ, кроме завершающие линии: \n, \r, \u2028 или \u2029.

  6. \d{2} : Нужно заканчивать по крайней мере с 2 десятичными

Твой пример функционируя с regex:

//esta linea podria ser en caso de que el texto este plano en un elemento
var str = "" + $("article").html();

//Expresion regular para buscar todas las coincidencias
var reg = /\$\s*(\d){1,3}((\,\d{3})+)?\.\d{2}/g

// buscamos las coincidencias
var match = str.match(reg);
console.log(match); //mostrando las coincidencias exactas

//reemplazamos las coincidencias con un elemento html
for (i = 0; i < match.length; i++) {
  str = str.replace(match[i], "<span class='precio'>" + match[i] + "</span>")
}
//mostramos el string en el elemento correspondiente usando jquery
$('article').html(str);
.precio {
  font-weight: bold;
  color: red;
  font-style: italic;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<article>
  <p class="post-meta"> por <span class="author vcard"><a rel="author" title="Mensajes de Hector Jimenez Olmos" href="http://www.bienesraicestequisquiapan.com/author/hejiol/">Hector Jimenez Olmos</a></span> | <span class="published">Sep 7, 2016</span></p>
  OFERTA DE $ 2,700,000.00 BAJA A $ 2,450,000.00 Características Dimensiones OFERTA!!&nbsp;Casa en dos plantas *Amplio jardín con fuente al frente *Estacionamiento para varios autos, *Sala con chimenea *Bóveda catalana, *Estudio o Recamara *Comedor, *Amplia
  cocina con barra... $2,23.33
</article>
5
ответ дан 24.11.2019, 13:27
  • 1
    Мне нравится это решение, но помогли, оно я не функционирует. То, что я делаю, состоит в том, чтобы помещать прямо твой код между рукописным шрифтом tags внутри страницы, которую я хочу затронуть, но он не дает результат. –  Agustin 08.09.2016, 22:42
  • 2
    @Agustin я издал с html, которые ты включаешь в вопрос –  JuankGlezz 08.09.2016, 22:52
  • 3
    добавляя вклад: regexr.com позволяет тебе играть и изучать немного má s на Регулярных Выражениях :D –  fredyfx 12.04.2017, 22:01

Я не такой хороший как JuankGlezz в regex, так что здесь есть другой выбор, вероятно гораздо менее работоспособный:

var miTexto = $('article').text();
var posIniciales = [], posFinales = [];
var finPrecio = " ";

// obtenemos las posiciones iniciales y finales del precio en el string, asumiendo que este inicia siempre por "$" y termina en el siguiente espacio " "
for(var i = 0; i < miTexto.length; i++) {
  if (miTexto[i] === "$") {
    posIniciales.push(i);
    searchIndex = (i + 2) + miTexto.substring(i + 2).indexOf(finPrecio);
    posFinales.push(searchIndex);
    }
}

// invertimos los dos array para no alterar las posiciones de las modificaciones en el siguiente paso
posIniciales.reverse();
posFinales.reverse();

// ponemos primero la última etiqueta que cierra, luego la última que abre, y así sucesivamente hasta llegar al inicio de la cadena
$.each(posFinales, function(index, value) {

  miTexto = miTexto.slice(0, value) + "</span>" + miTexto.slice(value);  

  miTexto = miTexto.slice(0, posIniciales[index]) + "<span class='featured-price'>" + miTexto.slice(posIniciales[index]);

});

// sustituimos el contenido actual por el generado
$('article').html(miTexto);
.featured-price {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
 <article>
     <p class="post-meta"> por <span class="author vcard"><a rel="author" title="Mensajes de Hector Jimenez Olmos" href="http://www.bienesraicestequisquiapan.com/author/hejiol/">Hector Jimenez Olmos</a></span> | <span class="published">Sep 7, 2016</span></p>
   OFERTA DE $ 2,700,000.00 BAJA A $ 2,450,000.00 Características Dimensiones OFERTA!!&nbsp;Casa en dos plantas *Amplio jardín con fuente al frente *Estacionamiento para varios autos, *Sala con chimenea *Bóveda catalana, *Estudio o Recamara *Comedor, *Amplia cocina con barra...               
 </article>

Редактирование: Как это просит OP в комментарии, я приспосабливаю код для того, чтобы оно функционировало с Вашим html и применяло стиль inline (несмотря на то, что был мало рекомендуемой практикой).

var miTexto = $('article').html();
var posIniciales = [], posFinales = [];
var finPrecio = " ";

// obtenemos las posiciones iniciales y finales del precio en el string, asumiendo que este inicia siempre por "$" y termina en el siguiente espacio " "
for(var i = 0; i < miTexto.length; i++) {
  if (miTexto[i] === "$") {
    posIniciales.push(i);
    searchIndex = (i + 2) + miTexto.substring(i + 2).indexOf(finPrecio);
    posFinales.push(searchIndex);
    }
}

// invertimos los dos array para no alterar las posiciones de las modificaciones en el siguiente paso
posIniciales.reverse();
posFinales.reverse();

// ponemos primero la última etiqueta que cierra, luego la última que abre, y así sucesivamente hasta llegar al inicio de la cadena
$.each(posFinales, function(index, value) {

  miTexto = miTexto.slice(0, value) + "</span>" + miTexto.slice(value);  

  miTexto = miTexto.slice(0, posIniciales[index]) + "<span style='font-weight: bold;color: red;font-style: italic;'>" + miTexto.slice(posIniciales[index]);

});

// sustituimos el contenido actual por el generado
$('article').html(miTexto);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
 <article>
     <p class="post-meta"> por <span class="author vcard"><a rel="author" title="Mensajes de Hector Jimenez Olmos" href="http://www.bienesraicestequisquiapan.com/author/hejiol/">Hector Jimenez Olmos</a></span> | <span class="published">Sep 7, 2016</span></p>
   OFERTA DE $ 2,700,000.00 BAJA A $ 2,450,000.00 Características Dimensiones OFERTA!!&nbsp;Casa en dos plantas *Amplio jardín con fuente al frente *Estacionamiento para varios autos, *Sala con chimenea *Bóveda catalana, *Estudio o Recamara *Comedor, *Amplia cocina con barra...               
 </article>
3
ответ дан 24.11.2019, 13:27
  • 1
    Мне нравится это решение, но помогли, оно я не функционирует. То, что я делаю, состоит в том, чтобы помещать прямо твой код между рукописным шрифтом tags помещенные непосредственно перед этикетка body завершения внутри страницы, которое я хочу затронуть, но он не дает результат. –  Agustin 08.09.2016, 22:43
  • 2
    Уже modifiqu и # 233; c и # 243; я говорю для того, чтобы он приспособился espec и # 237; ficamente, в которое ты хочешь. –  Shaz 08.09.2016, 23:32

Ты не нуждаешься jQuery, чтобы получать то, что ты хочешь, ты это можешь делать с mГ©todo повторно нравится из класса String и одна expresiГіn регулировать:

var cadena = 'hglsdf 12 jig 3ñ iou4 jh56 ñh78ñ 9 ds0'
var numeros = cadena.replace(/[^0-9]/g, '')
console.log(numeros)  // 1234567890
1
ответ дан 24.11.2019, 13:27