2010-12-15 5 views
1

정규식을 사용하여 사용자가 타임 스탬프를 올바르게 포맷하도록 "강제 적용"하고 싶습니다. 내가 입력을 제한 할 수 있습니다 순간Javascript RegExp 특정 장소에서만 특정 문자 허용 허용

있도록 사용자가 할 수있는 유일한 입력 숫자, 대시, 또는 사용하는 콜론 다음

function allownumbers(e) { 
     var key = window.event ? e.keyCode : e.which; 
     var keychar = String.fromCharCode(key); 
     var reg = new RegExp("[-0-9: ]") 
     if (key == 8) { 
      keychar = String.fromCharCode(key); 
     } 
     if (key == 13) { 
      key = 8; 
      keychar = String.fromCharCode(key); 
     } 
     return reg.test(keychar); 
    } 

그러나, 사용자는 여전히 유효하지 않은 데이터를 입력 할 수 있습니다, 예를 들어, 0000 :: - 12354가 유효성을 검사합니다.

정규 표현식을 사용하여 사용자가 #### - ## - ## ## : ## : ## (예 : 2010-12-15 10:57:01)을 입력하도록 할 수 있습니까?

(심지어 쿨러는 문자열의 올바른 위치를 쳤을 때 자동으로 대시, 콜론과 공간을 추가 한 경우. 것)

건배,

답변

1

사용 jQuery validation plugin.

사용자 정의 날짜 형식이 있으므로 this SO post으로 알려 드리겠습니다.

입력 중에 특정 패턴을 강제로 지정하려면 masked input plugin 이상을 찾습니다.

+0

을 입력 한 후? – Benubird

+0

@Benubird : 내 생각에 과도하지 않다. 그것이 여러 장소에서, 그리고 아마도 다른 입력 규칙에서 사용될 것이라면 왜 그것을 사용하지 않을까요? 일반적인 문제에 대한 좋은 해결책입니다. – darioo

+0

이 단일의 단순한 작업 이상이 필요하다는 암시가 없기 때문에; 우리 모두가 알고 있듯이, 이것은 전체 사이트의 유일한 자바 스크립트 일 수 있습니다 - 당신은 그가 사용되는 곳이 많다고 가정하고 있지만 그렇지 않을 수도 있습니다. 말할 것도없이, 당신은 실제로 그 질문에 대답하지 않았습니다. 그는 정규 표현식의 사용에 대해 질문하고있었습니다. '라이브러리 사용하기'라는 말은 아무런 정보도 제공하지 않기 때문에별로 도움이되지 않습니다. – Benubird

0

귀하의 정규 표현식 패턴은

var re = /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/; 
0

당신은 쉽게 할 수있는 일 수있다 - 단지 항목의 수를 제한하기 위해 {} 사용합니다. 상당히 원시적 인 예로서, 정규식 : [0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}은 원하는대로 할 것이며, 텍스트 상자의 전체 내용 (예 : reg.match (e.srcElement.value).

계속 진행하면서 테스트하려는 경우 this site의 코드를 사용하여 커서 위치를 결정한 다음 해당 위치에서 예상되는 것과 새로운 입력을 확인하고 예 대시 또는 스페이스를 자동으로 지정합니다.

0

작은 유효성 검사 블록을 사용해야하는 이유는 무엇입니까? 왜 이런 작은 작업에 대해 완전히 다른 라이브러리에 가져 - 그들은 문자열 ... 잔인한

var date = new Date(dtStr); 
if (isNaN(date) && dtStr != "MM/DD/YYYY") { 

    return alert('Please enter a valid date'); 
} 
else { 
    if (date.getFullYear() > 2100 || date.getFullYear() < 1900) { 
     return alert("Please enter a valid year"); 
    } 
} 
관련 문제