2010-09-22 2 views
1

Мне нужно регулярное выражение, которое разделяло бы строки, такие как itemXY, где X и Y являются целыми (item23), которые будут использоваться в javascript.Регулярное выражение для соответствия «item», за которым следуют две цифры

Я хотел бы, чтобы он возвращал целые числа x и y.

ответ

3

Предполагая, что вы всегда будете иметь две цифры, используйте:

var item = "item24"; 
var result = item.match(/(\d)(\d)$/); 
var digit1 = result[1]; 
var digit2 = result[2]; 
+0

Благодаря этим работает отлично. – Shouvik

1

Если все, что нужно последние цифры, то:

\d+$ 

будет делать свою работу. \d+ означает 1 или более цифр, а $ означает «в конце». Затем вы можете использовать result_string[0] и result_string[1] (конечно, вы должны проверить длину):

var txt = "item25"; 
var result = txt.match(/\d+$/); 
if (result != null) 
    { 
    var digits = result[0]; 
    alert(digits[0]); 
    alert(digits[1]); 
    } 

Вы также можете использовать регулярные выражения группы, как:

(\d)(\d)$ 
1

вы пытаетесь Extrac «23» в переменную?

здесь вы:

/^item([0-9]+)$/ 

извлечет любое число от itemXXXXXX возвращающегося этот номер.

+0

да я буду извлекая номер переменной, а затем объединить его с другой строки – Shouvik

3

Вам не нужно беспокоиться о регулярных выражениях парсера с этой проблемой. Если первая часть строки до числа всегда такой же длины, вы можете использовать slice() или substring():

var str = "item23"; 

alert(str.slice(4)); 
//-> 23 

Это будет быстрее и менее сложным, чем регулярное выражение. Если вам нужны цифры должны быть разделены, вы можете просто разделить их:

var arr = str.slice(4).split(); 
//-> ["2", "3"] 
+0

Спасибо, я не знал об этом методе. Попробуем это когда-нибудь ... :) – Shouvik

+0

@Shouvik: По моему опыту всегда лучше избегать использования регулярных выражений, если есть более подходящий метод. Я обновил свой ответ, чтобы включить решение, которое даст тот же результат, что и ваш принятый ответ. –

+0

Предполагая, что текст всегда длиной 4 символа. –

Смежные вопросы