Se eu tiver uma string como "something12" ou "something102", como eu usaria uma regex em javascript para retornar apenas as partes numéricas?
javascript
regex
Malcolm
fonte
fonte
d
, então.match(/\d+/g)
parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
Você também pode remover todos os caracteres que não são dígitos (
\D
ou[^0-9]
):fonte
Para número com fração decimal e sinal de menos, eu uso este trecho:
Atualização: - 09/07/2018
Encontrou uma ferramenta que permite editar visualmente expressões regulares: JavaScript Regular Expression Parser & Visualizer .
Atualizar:
Aqui está outro com o qual você pode até depurar o regexp: testador e depurador online de regex .
Atualizar:
Outro: RegExr .
Atualizar:
Regexper e Regex Pal .
fonte
Se você deseja apenas dígitos:
Agora você junta os dígitos
fonte
Eu acho que você deseja obter números da string. Nesse caso, você pode usar o seguinte:
fonte
get_numbers/1
retorna uma matriz de string, não número. Para seu exemplo, ele retornaria: *["102"]
*["102", "12"]
* nullAs respostas dadas não correspondem à sua pergunta, o que implicava um número final . Além disso, lembre-se de que você está recebendo uma string de volta; se você realmente precisa de um número, transmita o resultado:
Se você estiver lidando com IDs de itens numéricos em uma página da Web, seu código também poderá aceitar um
Element
extraindo o número deleid
(ou seu primeiro pai com umid
); se você forEvent
útil, provavelmente também poderá tirarElement
proveito disso.fonte
fonte
Na IMO, a resposta nº 3 de Chen Dachao neste momento é o caminho certo a seguir, se você deseja capturar qualquer tipo de número, mas a expressão regular pode ser abreviada de:
para:
Por exemplo, este código:
gera esta matriz:
Eu massacrei um exemplo de gradiente linear MDN para que ele teste totalmente a regexp e não precise rolar aqui. Acho que incluí todas as possibilidades em termos de números negativos, decimais, sufixos de unidade como deg e%, vírgula inconsistente e uso de espaço e os caracteres extras de ponto / período e hífen / hífen no texto "lin-grad.ient " Por favor, deixe-me saber se estou faltando alguma coisa. A única coisa que vejo que ele não lida com um número decimal mal formado como "0..8".
Se você realmente deseja uma matriz de números, pode converter a matriz inteira na mesma linha de código:
Meu código específico, que está analisando funções CSS, não precisa se preocupar com o uso não numérico do caractere ponto / ponto, para que a expressão regular possa ser ainda mais simples:
fonte
Usando split e regex:
fonte
De acordo com a resposta do @ Syntle, se você tiver apenas caracteres não numéricos, receberá um
Uncaught TypeError: Cannot read property 'join' of null
.Isso evitará erros se nenhuma correspondência for encontrada e retornará uma string vazia:
('something'.match( /\d+/g )||[]).join('')
fonte
Se você quiser números separados por pontos / vírgulas também:
ou
Você pode usar https://regex101.com/ para testar suas regexes.
fonte
Tudo o que outras soluções possuem, mas com um pouco de validação
fonte