2013-03-09 2 views
0

어떻게 내가이 시나리오가 있다면, 나는이(숫자 + 문자가 (없는 번호))

3b => allow 
4b => allow 
55b => allow 
1111bbbb => allow 
num45 => no ! 

를 입력하고, I가 주어 허용하는 경우 얻는 것입니다 감지 할 경우 감지하는 방법, 나 또한 좋아 고원 숫자가 아닌 모든 문자를 제거하는 방법

3b => 3 
555B => 555 
11 => 11 

주어진 입력이 숫자인지 아닌지를 확인하려고했지만이 조건이 내 지식 범위를 벗어났습니다.

시간 내 주셔서 감사드립니다. 문자열이 숫자로 시작하는 경우가 않는 경우

답변

-1

!/^[0-9]/.match(@variable).nil? 

,

@variable = @variable.gsub(/[^0-9]/, '') 
+0

하지만 예 "abfff45".gsub (/ [^ 0-9]/I '') I가 거짓으로 반환 할 => "45"인 경우 제 문자 실패 번호가 –

+0

이 아닙니다. 죄송합니다. 두 번째 부분이 필요하다고 생각합니다. 첫 번째 부분도 포함 시켰습니다. – Zippie

+0

정말 고마워요! –

0

흠 내가 더 정규식 닌자 오전없는 경우에만 숫자 부분을 얻을하지만 난 당신이 사용할 수 있다고 생각 : ^([\d]+)을 캡처 그냥 번호. 그것은 당신이 사용할 수있는 here

+0

고마워, 내게 새로운 시각을 주었다. –

+0

문제 없습니다. 지금은 고정되어 내 정규식에서 실수를 했어 – foklepoint

+0

또한 닫습니다하지만이 "foo \ n99" – pguardiario

2

을 시도해 : 표현이 원하는 번호가 첫 번째 캡처 그룹에있을 것입니다 일치

/\A(\d+)[a-z]*\z/i 

합니다.

예 : Rubular. (그것은 ^/$ 대신 \A/\z 그냥 데모를 들어, \A/\z을 사용해야합니다.)

+0

닫을 수 있지만 "11"반환해야합니다 "11"nil이 아니야 – pguardiario

+0

@ pguardiario, 오, 사양에서 명확하지 않았습니다. 나에게. 결정된. – Qtax

+0

왜 [[a-z] * \ z'를 사용해야합니까? 실제로 테스트를 개선하지는 않습니다. @ pguardiario의 답변을 참조하십시오. –

2

이 정수 + 문자열을보고 정수로 변환됩니다. 문자열 + 정수 입력을 무시합니다.

input = '45num' 

if input.match(/\d+[a-zA-Z]+/) 
    result = input.to_i 
end 

result => 45 
+0

이것은 지금까지 가장 좋은 대답입니다, 내 모습은 ***에 비해 비슷합니다 :) – Zippie

+0

질문 : 'num45 => 안돼!'- 나는 그것이 일치하지 않아야한다는 것을 의미했다. 하지만 누가 알 겠어? – pguardiario

+0

네가 맞습니다! 입력을 잘못 입력했습니다. 정규 표현식은 정확하지만 :). – Sam

1

당신은 정말 사용하려는 : str[/\A\d+/] - 이것은 당신에게 선행 숫자 또는 전무를 제공 할 것입니다.

+0

+1. 이것이 내가하는 방법이다. –