Если ваш номер всегда идет после con-
, вы можете использовать
let strs = ["h-3678/q-55/con-0.11", "h-3678/q-55/con--0.5/"];
for (let i=0; i < strs.length; i++) {
let str = strs[i];
console.log(str);
let con_match = str.match(/\bcon-(-?\d+(?:\.\d+)?)/);
let con = 0;
if (con_match) {
con = con_match[1];
}
console.log("Result:", con);
}
Подробности регулярного выражения
\b
- граница слова (граница слова \b
будет соответствовать только con
когда оно не является частью другого слова и не предшествует цифре или _
) con-
- буквенная подстрока (-?\d+(?:\.\d+)?)
- группа 1 (con_match[1]
значение): -?
- необязательный дефис \d+
- 1+ цифр (?:\.\d+)?
- 1 или 0 вхождений .
а затем 1+ цифр
Предполагая, что может быть любой текст между con
и последним числом , вы можете извлечь совпадение con
с/\b(con-[^\/]+)/
регулярное выражение, а затем, после получения значения группы 1, извлеките число из его конца:
let strs = ["h-3678/q-55/con-0.11", "h-3678/q-55/con--0.5/"];
for (let i=0; i < strs.length; i++) {
let str = strs[i];
console.log(str);
let con_match = str.match(/\b(con-[^\/]+)/);
let con = 0;
if (con_match) {
let m = con_match[1].match(/-(-?\d+(?:\.\d+)?)$/)
if (m) {
con = m[1];
}
}
console.log("Result:", con);
}
Второе регулярное выражение: /-(-?\d+(?:\.\d+)?)$/
:
-
- дефис (-?\d+(?:\.\d+)?)
- группа 1: -?
- необязательный дефис \d+
- 1+ цифр (?:\.\d+)?
- 1 или 0 вхождений .
и затем 1+цифры
$
- конец строки.