- Regex с использованием javascript для возврата только числа
- JavaScript | Как получить только цифры из строки?
- Альтернативный синтаксис
- Javascript replace оставить только цифры
- # Table of Contents
- # Remove all non-numeric characters from String in JavaScript
- # Using a character class instead of the \D special character
- # Leaving dots in the result to preserve floating-point numbers
- # Taking negative numbers into account
- # Handling multiple dots in the string
- # Additional Resources
Regex с использованием javascript для возврата только числа
Если бы у меня была строка типа “что-то12” или “что-то 102”, как бы я использовал регулярное выражение в javascript, чтобы вернуть только части числа?
var numberPattern = /\d+/g; 'something102asdfkj1948948'.match( numberPattern )
Это вернет объект с двумя элементами внутри “102” и “1948948”. Действуйте по своему усмотрению. Если он не соответствует ни одному, он вернет null.
Предполагая, что вы не имеете дело со сложными десятичными знаками, этого должно быть достаточно.
Вы также можете удалить все нецифровые символы ( \D или [^0-9] ):
let word_With_Numbers = 'abc123c def4567hij89' let word_Without_Numbers = word_With_Numbers.replace(/\D/g, ''); console.log(word_Without_Numbers)
Для числа с десятичной дробью и знаком минус я использую этот фрагмент:
var NUMERIC_REGEXP = /[-][\d]*[\.][\d]+/g; '2.2px 3.1px 4px -7.6px obj.key'.match(NUMERIC_REGEXP) // return ["2.2", "3.1", "4", "-7.6"]
Обновление: – 9/9/2018
Нашел инструмент, позволяющий визуально редактировать регулярные выражения: JavaScript Regular Expression Parser & Visualizer.
Вот еще один, с помощью которого вы можете даже отладчик регулярных выражений: онлайн тестер регулярных выражений и отладчик.
Regexper и Regex Pal.
Если вам нужны только цифры:
var value = '675-805-714'; var numberPattern = /\d+/g; value = value.match( numberPattern ).join([]); alert(value); //Show: 675805714
Теперь вы получаете цифры, соединенные
Я думаю, вы хотите получить число из строки. В этом случае вы можете использовать следующее:
// Returns an array of numbers located in the string function get_numbers(input) < return input.match(/9+/g); >var first_test = get_numbers('something102'); var second_test = get_numbers('something102or12'); var third_test = get_numbers('no numbers here!'); alert(first_test); // [102] alert(second_test); // [102,12] alert(third_test); // null
Ответы не соответствуют вашему вопросу, что подразумевает конечное число. Кроме того, помните, что вы возвращаете строку; если вам действительно нужен номер, введите результат:
item=item.replace('^.*\D(\d*)$', '$1'); if (!/^\d+$/.test(item)) throw 'parse error: number not found'; item=Number(item);
Если вы имеете дело с числовыми идентификаторами элементов на веб-странице, ваш код также может с пользой принять Element , извлекая номер из его id (или его первого родителя с id ); если у вас есть Event , вы также можете получить Element от этого.
var result = input.match(/\d+/g).join([])
IMO ответ № 3 в этот раз от Chen Dachao – правильный путь, если вы хотите захватить любое число, но регулярное выражение можно сократить с:
"lin-grad.ient(217deg,rgba(255, 0, 0, -0.8), rgba(-255,0,0,0) 70.71%)".match(/-?\d*\.?\d+/g)
Я вырезал пример линейного градиента MDN, так что он полностью тестирует регулярное выражение и не нуждается в прокрутке здесь. Я думаю, что я включил все возможности с точки зрения отрицательных чисел, десятичных знаков, единичных суффиксов, таких как deg и%, непоследовательного использования запятой и пробела, а также дополнительных символов точки/точки и дефиса/тире в тексте “lin-grad.ient “. Пожалуйста, дайте мне знать, если я что-то упустил. Единственное, что я вижу, что он не обрабатывает, это неправильно сформированное десятичное число, например, “0,8”.
Если вам действительно нужен массив чисел, вы можете преобразовать весь массив в одну строку кода:
array = whatever.match(/-?\d*\.?\d+/g).map(Number);
Мой конкретный код, который выполняет синтаксический анализ функций CSS, не должен беспокоиться о нечисловом использовании символа точки/точки, поэтому регулярное выражение может быть еще проще:
var result = input.match(/\d+/g).join([])
JavaScript | Как получить только цифры из строки?
Нам нужно из этой строки удалить все буквы и оставить только символы и цифры. Как это сделать?
В этом нам помогут регулярные выражения, классы символов и диапазоны классов. Все замены мы будем производить методом replace() .
Регулярному выражению будет присвоен глобальный флаг «g» для оценки всех повторений в строке. Заменять мы будем на пустую строку, что будет приравнено к удалению.
Получим слипшиеся цифры в виде одной строки:
только пробелы stroka.replace(/[^0-9, ]/g,"") пробелы и любые другие символы stroka.replace(/[^0-9,\s]/g,"")
В диапазон символов мы добавили пробел, поэтому нам вернулась строка с пробелами.
Альтернативный синтаксис
Можно использовать специальный экранированный класс символа (CharacterClassEscape), который обозначается буквой D .
Он находит сопоставления в строке, которые НЕ равны набору из десяти цифр.
Он экранированный — это значит, что перед D мы должны будем поставить символ обратной косой черты \ . Ну и конечно это всё мы будем вводить внутри шаблона регулярного выражения, который обозначается границами в виде двух косых линий / / .
То есть мы можем найти в строке все места где символ не соответствует одному из: 0123456789
var stroka color: #993300;">Привет1274 ме234ня зо65вут 7987Ефим!"
stroka.replace(/\D/g,'') '1274234657987'
Javascript replace оставить только цифры
Last updated: Feb 15, 2023
Reading time · 3 min
# Table of Contents
# Remove all non-numeric characters from String in JavaScript
Use the String.replace() method to remove all non-numeric characters from a string.
The String.replace() method will remove all characters except the numbers in the string by replacing them with empty strings.
Copied!const str = 'bobby 123 !@#$%^hadz?456._com'; const result = str.replace(/\D/g, ''); console.log(result); // 👉️ 123456
The first argument we passed to the String.replace() method is a regular expression.
The forward slashes / / mark the beginning and end of the regular expression.
Copied!const str = 'bobby 123 !@#$%^hadz?456._com'; const result = str.replace(/\D/g, '');
We used the g (global) flag to denote that the regular expression should match all occurrences in the string, and not just the first occurrence.
The \D character matches all non-digit characters.
The second argument we passed to the String.replace() method is the replacement for each match.
We used an empty string as the replacement to remove all non-numeric characters from the string.
Copied!const str = 'bobby 123 !@#$%^hadz?456._com'; const result = str.replace(/\D/g, ''); console.log(result); // 👉️ 123456
The replace() method doesn’t change the original string, it returns a new string. Strings are immutable in JavaScript.
We replace all non-digit characters with an empty string to remove them from the string.
# Using a character class instead of the \D special character
You can also use a character class containing a range of digits to achieve the same result.
Copied!const str = 'bobby 123 !@#$%^hadz?456._com'; const result = str.replace(/[^0-9]/g, ''); console.log(result); // 👉️ 123456
The square brackets [] are called a character class and match the digits in the range.
When a caret ^ is used at the beginning of a character class, it means «Not the following».
In other words, match anything but the digits in the range from 0 to 9 and remove the matches.
This wouldn’t work if you have floating-point numbers in your string because the dots . would also get stripped.
If you are trying to preserve a float number by keeping dots in the final result, things can go wrong if the string contains multiple dots or a dot in the wrong place.
# Leaving dots in the result to preserve floating-point numbers
If you want to leave dots in the result to try to preserve floating-point numbers, use the following regular expression.
Copied!const str = 'bobby 123 !@#$%^hadz?.456_com'; const result = str.replace(/[^\d.]/g, ''); console.log(result); // 👉️ 123.456
The forward slashes / / mark the beginning and end of the regular expression.
The part between the square brackets [] is called a character class and matches everything except for digits and dots.
The caret ^ symbol in the regex means «NOT the following».
We match all non-digits or dots in the example.
The \d character matches all digits in the range 7. However, we prefixed the character with a caret ^ (not). So in its entirety, the regex matches all non-digit characters and dots.
As previously noted, things can go wrong if multiple dots exist in the string or a dot is at the wrong place.
# Taking negative numbers into account
If you need to take negative numbers into account, slightly tweak the regular expression.
Copied!const str = '-bobby 123 !@#$%^hadz?.456_com'; const result = str.replace(/[^\d.-]/g, ''); console.log(result); // 👉️ -123.456
Notice that we added a minus sign — at the end of the character class.
# Handling multiple dots in the string
If you need to handle multiple dots in the string, use the parseFloat() function on the result.
Copied!const str = '-124.45.67 $'; const result = parseFloat(str.replace(/[^\d.-]/g, '')); console.log(result); // 👉️ -124.45
We used the same regular expression to remove all non-numeric characters from the string.
The last step is to use the parseFloat() function to remove the part after the second period.
Copied!const str = '-124.45.67 $'; // 👇️ -124.45.67 console.log(str.replace(/[^\d.-]/g, '')); const result = parseFloat(str.replace(/[^\d.-]/g, '')); console.log(result); // 👉️ -124.45
The parseFloat() function takes a string as a parameter, parses the string and returns a floating-point number.
Copied!const str1 = '123.456abc'; console.log(parseFloat(str1)); // 👉️ 123.456 const str2 = '88.123bc'; console.log(parseFloat(str2)); // 👉️ 88.123
As with parseInt() , the parseFloat() method ignores the non-numeric characters at the end of the string.
# Additional Resources
You can learn more about the related topics by checking out the following tutorials:
I wrote a book in which I share everything I know about how to become a better, more efficient programmer.