2014-09-30 3 views
0

JavaScript 형식 유효성 검사에서 문제점이 있습니다. 숫자와 대시가있는 정규식

var srNo =/^[-0-9]*$/; 
var srNo = /^[0-9]+(-[0-9]+)+$/; 
var srNo=/^([0-9]+-)*[0-9]+$/; 

이에 대한 몇 가지 정규식을 제안 : 나는 이러한 정규 표현식을 시도하지만 제대로 일한이 형식 1-74347064527 에 번호를 저장해야합니다. 친절하게 생각합니다.

+1

'^ [0-9] + - [0-9] + $'또는'^ \ d + - d + $'의 문제점은 무엇입니까? – hwnd

+0

@hwnd 당신은 이것을 의미합니다. var srNo =/^ \ d + - \ d + /; 권리 ? 작동하지 않습니다! – ABJ

+1

더 많은 예제 나 시도를 제공 할 수 있다면 도움이 될 것입니다. – hwnd

답변

0

문자 클래스 ([ ])에서, 대시 (-)이있는 정규 표현식의 특별한 의미 - "범위"를 의미합니다 (예 : a-zfrom 'a' to 'z'을 의미합니다. 당신은 그것을 탈출하지 않으므로 RegExps는 정확하지 않습니다 (적어도 모든 언어에서).

업데이트 : 대시가 다른 문자 (문자 클래스의 시작 또는 끝에 위치 할 때)로 둘러싸여 있지 않으면이 구문이 올바른 것으로 나타납니다. 혼란을 드려 죄송합니다. 하나 개 이상의 숫자에 의해 다음

/^\d\-\d+$/ 

그것은 대시 다음에 하나의 숫자로 시작하는 문자열을, 일치, 그리고 :

대신 사용해보십시오.

+0

감사합니다. 그것의 작동! – ABJ

1

추가 제약이없는 경우이 작동합니다 :

var srNo = /^\d+-\d+$/; 

을 당신이 [0-9] 구문을 선호하는 경우 :

var srNo = /^[0-9]+-[0-9]+$/; 
0
var regex = /^\d{1}-?\d{11}$/g 
window.alert(regex.test('1-74347064527')); 
관련 문제