2017-02-01 2 views
-1

Учитывая, что «1/2009 оставаться дольше» или «34/1874 должен идти», как я могу получить цифру сразу после «/», используя регулярное выражение.
'1/2009'.match(/\d+\/(\d)\d\d\d/g)[0] возвращает 1/2009, что не то, что я хочу. ТНХjavascript regex - extract number from string

+0

Try '[1]' вместо '[0]' – Pointy

+0

мутноватый, какого рода помощь вам нужно , То есть какая часть [match-return value] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match#Return_value) не объяснила смысл результата для вас? –

+0

Вы хотите '2' от' 1/2009' или '2009'? – Tushar

ответ

1

Ваш RegEx работает, если вы хотите одноразрядные сразу после /

Вашего регулярного выражения \d+\/(\d)\d\d\d будет соответствовать цифрам / затем четыре цифры и добавить первую цифру после косых черт в захваченной группе. Обратите внимание, что 0-я захваченная группа будет содержать полную строку соответствия. g флаг не нужен, поскольку в этом шаблоне есть только один экземпляр чисел.

Вы можете использовать это регулярное выражение, но используйте первый индекс, чтобы получить цифру сразу после слэша.

'1/2009'.match(/\d+\/(\d)\d\d\d/g)[1] 
           ^: Get me the value from first captured group. 

И это регулярное выражение может быть оптимизирован под

.match(/\/(\d)/)[1] 

Это будет совпадать с номером с последующим /. И используйте первую захваченную группу для извлечения числа.

<input type="text" onblur="console.log(this.value.match(/\/(\d)/)[1])" />


Чтобы получить все цифры после /

Просто добавьте + квантора к \d в захваченной группе.

.match(/\/(\d+)/)[1] 
+0

Я смущен тем, что именно хочет OP. Так добавил оба ответа. – Tushar

1

Попробуйте

var string = "1/2009 stay longer"; 
 
console.log(string.match(/\/(\d+)/)[1]);

\d+ матчи один или несколько цифр. Если вас интересует только запись цифры после /, используйте вместо этого string.match(/\/(\d)/.

0

Вы можете использовать EXEC метод регэкспа объекта также:

console.log(/\d+\/(\d).*/.exec('1/2009')[1]);