대시와 숫자 만 허용하는 정규식이란 무엇입니까?대시와 숫자 만 허용하는 정규식?
좋은 예는 전화 번호에서 사용하는 것입니다. 예 : 555-555-555, 12-2314-425.
나는 과 같은 항목을 원하지 않지만, 현재 -34--53-343
은 괜찮습니다.
대시와 숫자 만 허용하는 정규식이란 무엇입니까?대시와 숫자 만 허용하는 정규식?
좋은 예는 전화 번호에서 사용하는 것입니다. 예 : 555-555-555, 12-2314-425.
나는 과 같은 항목을 원하지 않지만, 현재 -34--53-343
은 괜찮습니다.
그래서 명시된 바와 같이 문제, 당신은 적어도 하나 개의 숫자를 원하지만 다른 어떤 0-9 또는 대시. 당신은, 당신은 아마 원하는 선택적으로 하나의 대시로 구분 된 숫자의 시퀀스를 인식 뭔가를 전화 번호를 인식하려는 경우
/^[\d-]*\d[\d-]*$/
%w{555-555-555 12-2314-425 -34--53-343 -------------}.each{|s| puts "#{s} #{s.match(/^[\d-]*\d[\d-]*$/) ? 'does' : 'does not'} match"}
555-555-555 does match
12-2314-425 does match
-34--53-343 does match
------------- does not match
, 대신이 시도 :
/^\d+(?:-\d+)*$/
어느 제외 선행 또는 대시 후행하고 대시가 두 번 나타납니다.
+1 : 내 대답을 삭제했습니다. '\ d'를 사용한다는 것을 제외하고는 이것과 동일하다는 것을 깨달았습니다. 귀하의 작업을보기 위해 [링크] (http://rubular.com/r/IX1r3vaH9N)가 있습니다. – Windle
글쎄 대시도 사용하지 않기로 결정했다면. 나는 그것을 말하는 더 정확한 방법을 추측한다, 그들은 단지 숫자 나 대시를 가질 수있다. – LearningRoR
은 루비를 몰라,하지만 난 정규식은 가정
/^[0-9]([0-9]|-(?!-))+$/
555-54-456
이 유효 555--54-456
이 아닌)
RegEx에는 메모리가 없으므로 모든 스팟을 하나씩 가져올 수 있다면 대시 중에 숫자가 표시 될 수 있습니다. – TheZ
@TheZ Ruby와 다른 동적 언어 regexp는 분명히 [그들이 backreferences를 지원함] (http://www.ruby-doc.org/core-1.9.3/Regexp.html#label-Capturing)과 같은 "기억을 가지고 있습니다". 하나는 "메모리"정규식을이 질문의 원하는 행동을 일치하게 만들 필요가 없습니다, 내 대답은 아래 참조하십시오. – dbenhur