Мне нужно найти слово в строке, которая начинается с BK
или WL
, за которой следуют 2 числа. Если числа меньше или равны 50, я хочу изменить цвет всего слова на синий, иначе на красный.
Например, если у меня есть:
32FML EKKF BK30
Мне нужно вернуться:
32FML EKKF <span class="blue">BK30</span>
Попробуйте это /((BK|WL)(\d{2}))/g
шаблон регулярного выражения.
Если вы проверяете менее 50
, примените некоторый ternary operator
взамен функции.parse строка для использования числа с parseFloat()
Объяснение регулярного выражения и шаблона
var str ='32FML EKKF BK30 BK66'
document.body.innerHTML=str.replace(/((BK|WL)(\d{2}))/g ,(a,b,c,d) => parseFloat(d)<50 ? '<span class="red">'+b+'</span>' : b)
.red{
color:red
}
Ну, я думаю, что мой комментарий - правильный ответ, поэтому... Для этого вы можете использовать регулярное выражение, и это может быть полезно для передачи согласованных частей строки в шаблон замены. Что-то вроде этого:
var str = "32FML EKKF BK30";
var highlighted = str.replace(/(BK30)/, '<span class=""blue">$1</span>');
То, что сказал MysterX, верно, и у меня тоже есть регулярное выражение:
"32FML EKKF BK30".replace(/((BK|WL)+\d{2})/, '<span class=""blue">$1</span>')