나는 처음에 더하기/빼기 기호 다음에 텍스트 필드 입력란에 하나의 점 만 허용하는 10 진수 숫자가 필요하다는 요구 사항이 있습니다. .RegEx는 자바 스크립트에서 텍스트 필드에 음수 십진수 입력 허용
텍스트 필드에는 일반 정수와 십진수 및 음수와 음수의 10 진수를 사용할 수 있어야합니다. 플러스 및 마이너스 기호는 처음 (첫 번째 문자)에만 허용되어야하며 선택 사항입니다. 또한 소수점 이하 자리수를 허용해야합니다 (예 : -12.12345 등). 단 하나의 소수점 (점) 만 입력하십시오. 허용
숫자는 1, + 1, -1, 0.1, 1.1, -1.1, -.12, +.12, 123.4456, -123.345, 123.345은
어떤 도움이 높게 평가되고 등등 .
위의 요구 사항에 대해서는 아래 정규식을 사용하고 있습니다.
var integerOnly = /[\+\-0-9\.]/g;
이하의 스크립트 (약간 수정 한 다른 스레드에서 가져온 것)를 확인하십시오.
function restrictInput(myfield, e, restrictionType, checkdot){
if (!e) var e = window.event
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
var character = String.fromCharCode(code);
alert("1 " + character);
// if user pressed esc... remove focus from field...
if (code==27) { this.blur(); return false; }
//alert("2");
// ignore if the user presses other keys
// strange because code: 39 is the down key AND ' key...
// and DEL also equals .
if (!e.ctrlKey && code!=9 && code!=8 && code!=36 && code!=37 && code!=38 && (code!=39 || (code==39 && character=="'")) && code!=40) {
alert("3");
if (character.match(restrictionType)) {
alert("4");
if(checkdot == "checkdot" & '-' != character & '+' != character){
alert("5");
return !isNaN((myfield.value.toString()==''? '0':myfield.value.toString())+character);
} else {
return true;
}
} else {
return false;
}
}
}
다음은 스크립트 호출 방법입니다.
<input type="text" id="db" width="3" value="" onkeypress="return restrictInput(this, event, integerOnly, 'checkdot');"/>
그것은 같은 몇 가지 경우를 제외하고 잘 작동 :
- 이 허용 +/- 시대의 어떤 장소 어떤 수. 내 요구 사항은 처음에만 허용하는 것입니다.
아래와 같이 정규식을 수정하려고했습니다.
var integerOnly = /[\+\-]?[0-9\.]/g;
이 경우 표현식과 일치하지 않습니다. 경고 4에 도달하지 않습니다.
한 가지 점은 소수점 이하 하나만 허용한다는 것입니다.
정규식을 수정하여 처음부터 +/- 만 허용하도록 도와 줄 수 있습니까?
감사합니다.
RegEx를 쉽게 사용하고 결과를 즉시 확인하려면 http://regexpal.com/ –