내 JSP 페이지에는 열 중 하나가 HH : mm 형식으로 표시된 시간이고 데이터 유형이 문자열이라는 테이블이 하나 있습니다 (서버에서 날짜를 문자열로 변환했습니다). 이제 Jquery 플러그인 Tabledit을 사용하여 인라인 테이블 행 편집을 적용하고 있습니다.
열을 편집하고 서버로 보내기 전에 RegExp로 확인하고 있습니다.
var inTime = [];
var timeRegEx = new RegExp("^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|0[0-9]|([1-5][0-9]))$");
inTime[1] = "14:34";
if (timeRegEx.test(inTime[1])) {
alert("Matched");
//return true;
} else {
alert("Not Mateched");
//return false;
}
일부 onilne 리소스에서 RegExp의 유효성을 확인했으며 정확합니다.
그러나 내 경우에는 모든 유효하고 잘못된 입력에서 항상 else 블록으로 이동합니다.
그리고 더 많은 것은 alert에 inTime [1] 의 값을 인쇄하는 동안 입니다. 다음과 같은 출력을 제공합니다. 14 % 3A13
그래서 나는 또한 RegExp에서 % 3A 로 대체 했지만 작동하지 않았습니다.
그래서 내가 어디로 잘못 가고 있고 올바른 해결책이 무엇인지 알려주십시오.
편집하다:
여기 : % 3A로 해석되므로 문제가 발생할 수 있습니다.
여기서 inTime은 테이블 행에서 값을 가져 오는 배열입니다.
질문에서 언급했듯이 배열 변수 inTime [1]은 HTML 테이블에서 데이터를 가져옵니다. 다음을 % 3A로 사용하므로 RegExp를 테스트하는 문제가 발생합니다.
@Spanky는 decodeURIComponent (timeRegEx.test (inTime [1])) 시도해 보도록 힌트를 주지만 나에게도 효과가 없었습니다.
그래서 그의 솔루션을 약간 수정하고 decodeURIComponent ()를 inTime [1] 변수에만 적용했습니다. 이것은 나를 위해 일했습니다.
솔루션 코드 스 니펫은 다음과 같습니다.
var inTime = [];
var timeRegEx = new RegExp("^([0-9]|0[0-9]|1[0-9]|2[0-3]):([0-9]|0[0-9]|([1-5][0-9]))$");
inTime[1] = "14%3A34";
if (timeRegEx.test(decodeURIComponent(inTime[1]))) {
console.log("Matched");
//return true;
} else {
console.log("Not Mateched");
//return false;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다