Разбор Int из строки в javascript

В javascript, как лучше всего разобрать INT из строки, начинающейся с буквы (например, «test [123]»)? Мне нужно что-то, что будет работать для примера ниже.

Мой JS:

$(document).ready(function() {

    $(':input').change( function() {
        id = parseInt($(this).attr("id"));  //fails for the data below
        alert(id);
    });
}

Мой сгенерированный HTML:

<select id = "attribute[123]">
<!-- various options -->
</select>
<select id = "attribute[456]">
<!-- various options -->
</select>

Спасибо!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
24
0
65 701
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

parseInt(input.replace(/[^0-9-]/,""),10)

Интересно, что это НЕ будет работать, если заданы допустимые литералы с плавающей запятой, такие как "1e10".

Triptych 16.01.2009 03:22

Конечно, для поплавков это не сработает. Опера конкретно спросила о ints.

Joel Coehoorn 16.01.2009 04:02

Возможно, просто отфильтруйте строку с помощью .replace (). Если есть другой способ, то я об этом не знаю:

parseInt("attribute[123]".replace("attribute[", "").replace("]", "")));

Вы, вероятно, могли бы использовать какое-нибудь Regex, чтобы поместить это только в один .replace (), но я плохо разбираюсь в Regex, поэтому я просто сделал это дважды.

Проверьте это в своем браузере с помощью

javascript:alert(parseInt("attribute[123]".replace("attribute[", "").replace("]", "")));

Должен предупредить 123.

Ответ принят как подходящий

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

$(this).attr("id").match(/\d+/)

Отметьте галочкой для лаконичности и удобочитаемости. Тем не менее, спасибо всем. :)

Wickethewok 16.01.2009 01:17

Обратите внимание, что регулярное выражение следует изменить на «/ [- +]? \ D + /» для более общего случая (чтобы разрешить подписанные целые числа), но это выглядит ненужным для ситуации OP.

Ben Blank 16.01.2009 01:17

Что сделало бы его более надежным, так это выполнение $ (this) .attr ("id"). Match (/ \ [(\ d +) \] /) [1], поскольку это позволило бы такие вещи, как "attribute7 [123]"

PEZ 16.01.2009 02:10

объяснение здесь было бы очень полезным.

d-_-b 02.06.2013 22:07

Другие вопросы по теме