Если у меня есть строка типа «something12» или «something102», как мне использовать регулярное выражение в javascript, чтобы вернуть только части числа?
javascript
regex
Малькольм
источник
источник
d
, поэтому.match(/\d+/g)
parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
Вы также можете удалить все нецифровые символы (
\D
или[^0-9]
):источник
Для числа с десятичной дробью и знаком минус я использую этот фрагмент:
Обновление: - 09.07.2018
Нашел инструмент, позволяющий визуально редактировать регулярные выражения: Анализатор и Визуализатор регулярных выражений JavaScript .
Обновить:
Вот еще один, с помощью которого вы можете даже отладить регулярное выражение: онлайн-тестер и отладчик регулярных выражений .
Обновить:
Еще один: RegExr .
Обновить:
Regexper и Regex Pal .
источник
Если вам нужны только цифры:
Теперь вы соединяете цифры
источник
Я думаю, вы хотите получить число (а) из строки. В этом случае вы можете использовать следующее:
источник
get_numbers/1
возвращает массив строки, а не числа. В вашем примере он вернет: *["102"]
*["102", "12"]
* nullПриведенные ответы на самом деле не соответствуют вашему вопросу, что подразумевает конечный номер. Также помните, что вы получаете обратно строку; если вам действительно нужно число, приведите результат:
Если вы имеете дело с числовыми идентификаторами элементов на веб-странице, ваш код также может с пользой принять
Element
, извлекая число из егоid
(или его первого родителя с символомid
); если у вас есть подEvent
рукой, вы, вероятноElement
, тоже можете получить от него.источник
источник
ИМО, ответ №3 на данный момент Чен Дачао - правильный путь, если вы хотите захватить любое число, но регулярное выражение можно сократить от:
чтобы:
Например, такой код:
генерирует этот массив:
Я вырезал пример линейного градиента MDN, чтобы он полностью тестировал регулярное выражение и не нужно было здесь прокручивать. Я думаю, что я включил все возможности с точки зрения отрицательных чисел, десятичных знаков, суффиксов единиц измерения, таких как deg и%, несогласованного использования запятой и пробела, а также дополнительных символов точки / точки и дефиса / тире в тексте "lin-gradient.ient" ». Пожалуйста, дайте мне знать, если я что-то упускаю. Единственное, что я вижу, что он не обрабатывает, - это неправильно сформированное десятичное число, такое как "0..8".
Если вам действительно нужен массив чисел, вы можете преобразовать весь массив в той же строке кода:
Мой конкретный код, который анализирует функции CSS, не должен беспокоиться о нечисловом использовании символа точки / точки, поэтому регулярное выражение может быть еще проще:
источник
Использование разделения и регулярного выражения:
источник
Согласно ответу @Syntle, если у вас есть только нечисловые символы, вы получите файл
Uncaught TypeError: Cannot read property 'join' of null
.Это предотвратит ошибки, если совпадения не найдены, и вернет пустую строку:
('something'.match( /\d+/g )||[]).join('')
источник
Если вам нужны числа, разделенные точкой / запятой, тогда:
или
Вы можете использовать https://regex101.com/ для проверки своих регулярных выражений.
источник
Все, что есть в других решениях, но с небольшой проверкой
источник