답변:
정규식 :
var numberPattern = /\d+/g;
'something102asdfkj1948948'.match( numberPattern )
내부에 '102'와 '1948948'이라는 두 개의 요소가 포함 된 배열을 반환합니다. 원하는대로 작동하십시오. 일치하지 않으면 null을 반환합니다.
그들을 연결하려면 :
'something102asdfkj1948948'.match( numberPattern ).join('')
복잡한 소수를 다루지 않는다고 가정하면 충분하다고 생각합니다.
d
때문에,.match(/\d+/g)
parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
숫자가 아닌 모든 문자 ( \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 = /[-]{0,1}[\d]*[.]{0,1}[\d]+/g;
'2.2px 3.1px 4px -7.6px obj.key'.match(NUMERIC_REGEXP)
// return ["2.2", "3.1", "4", "-7.6"]
업데이트 :-7/9/2018
정규식을 시각적으로 편집 할 수있는 도구 인 JavaScript Regular Expression Parser & Visualizer를 찾았습니다 .
최신 정보:
디버거 정규 표현식을 사용할 수있는 또 하나의 방법이 있습니다 : 온라인 정규식 테스터 및 디버거 .
최신 정보:
다른 하나는 RegExr 입니다.
최신 정보:
정규 표현식 과 정규 표현식 Pal .
문자열에서 숫자를 얻고 싶다고 생각합니다. 이 경우 다음을 사용할 수 있습니다.
// Returns an array of numbers located in the string
function get_numbers(input) {
return input.match(/[0-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
get_numbers/1
숫자가 아닌 문자열 배열을 반환합니다. 예를 들어, 다음을 반환합니다. * ["102"]
* ["102", "12"]
* null
주어진 답변이 실제로 귀하의 질문과 일치하지 않으므로 후행 번호 를 의미합니다 . 또한 문자열을 다시 얻는다는 것을 기억하십시오. 실제로 숫자 가 필요한 경우 결과를 캐스트하십시오.
item=item.replace('^.*\D(\d*)$', '$1');
if (!/^\d+$/.test(item)) throw 'parse error: number not found';
item=Number(item);
웹 페이지에서 숫자 항목 ID를 처리하는 경우 코드에서 유용하게을 수락하여을 (또는 첫 번째 상위) Element
에서 숫자를 추출 할 수 있습니다 . 당신이 편리 하다면 , 당신 도 그로부터 얻을 수 있습니다.id
id
Event
Element
Chen Dachao의 IMO # 3 답변은 모든 종류의 숫자를 캡처하려는 경우 올바른 방법이지만 다음과 같이 정규 표현식을 단축 할 수 있습니다.
/[-]{0,1}[\d]*[\.]{0,1}[\d]+/g
에:
/-?\d*\.?\d+/g
예를 들어이 코드는 다음과 같습니다.
"lin-grad.ient(217deg,rgba(255, 0, 0, -0.8), rgba(-255,0,0,0) 70.71%)".match(/-?\d*\.?\d+/g)
이 배열을 생성합니다.
["217","255","0","0","-0.8","-255","0","0","0","70.71"]
나는 정규 표현식을 완전히 테스트하고 여기에서 스크롤 할 필요가 없도록 MDN 선형 그라디언트 예제를 도살했습니다. 음수, 소수, deg 및 %와 같은 단위 접미사, 일관성없는 쉼표 및 공간 사용, 텍스트 "lin-grad.ient"에 추가 점 / 마침표 및 하이픈 / 대시 문자 등의 모든 가능성을 포함 시켰습니다. ". 빠진 것이 있으면 알려주세요. 내가 처리 할 수없는 유일한 것은 "0..8"과 같이 잘못 구성된 10 진수입니다.
실제로 숫자 배열을 원하면 동일한 배열의 코드로 전체 배열을 변환 할 수 있습니다.
array = whatever.match(/-?\d*\.?\d+/g).map(Number);
CSS 함수를 파싱하는 내 특정 코드는 점 / 마침표 문자의 숫자가 아닌 사용에 대해 걱정할 필요가 없으므로 정규 표현식이 더 간단해질 수 있습니다.
/-?[\d\.]+/g
점 / 쉼표로 구분 된 숫자도 원하면 다음을 수행하십시오.
\d*\.?\d*
또는
[0-9]*\.?[0-9]*
https://regex101.com/ 을 사용하여 정규식을 테스트 할 수 있습니다 .