问一个JS用的正则表达式。从-0.5到0,1位小数.

getian 2009-10-20 12:17:43
需要控制一个文本框的输入,范围是-0.5到0,保留1位小数。
也就是说可以输入的是 -0.5 -0.4 -0.3 -0.2 -0.1 0 六种情况。请问用怎样的正则表达式限制?
...全文
491 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
getian 2009-10-20
  • 打赏
  • 举报
回复
BeenZ您好,谢谢您的答复,我的需求是要能够在KeyDown的时候判断。
也就是允许用户输入 -0.5 -0.4 -0.3 -0.2 -0.1 0的六种数字。
使用您提供的正则表达式如下,不能达到目标。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<script>
function regInput(obj, reg, inputStr) {
var docSel = document.selection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
oSel = docSel.duplicate()
oSel.text = ""
var srcRange = obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
return reg.test(str)
}
</script>
<input type="text" id="txt" onkeypress = "return regInput(this,/^-0.[1-5]{1}$/,String.fromCharCode(event.keyCode))">

<input type="button" value="test" onclick="test()">

</body>
</html>


我将代码改为如下,还是不行。请指点。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<script>
function regInput(obj, reg, inputStr) {
var docSel = document.selection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
oSel = docSel.duplicate()
oSel.text = ""
var srcRange = obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
return reg.test(str)
}
</script>
<input type="text" id="txt" onkeypress = "return regInput(this, /^-{1}|(-0){1}|(-0.){1}|-0.[1-5]{1}$/, String.fromCharCode(event.keyCode))">

<input type="button" value="test" onclick="test()">

</body>
</html>

BeenZ 2009-10-20
  • 打赏
  • 举报
回复

<script>
function test(){
var str=document.getElementById("txt").value
var reg=/^-0.[1-5]{1}$/;
alert(reg.test(str))
}
</script>
<input type="text" id="txt"><input type="button" value="test" onclick="test()">
BeenZ 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhiqiangzhan 的回复:]

.需要转义,否则可以匹配任何单字符。
[/Quote]
多谢提醒,手头事太杂忙晕中
getian 2009-10-20
  • 打赏
  • 举报
回复
谢谢两位,可惜分数太少,不成敬意。
James__Zhan 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 beenz 的回复:]
每次输入你都要判断的话
HTML code<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Untitled Page</title></head><body><script>function regInput(obj, reg, inputStr) {var docSel= document.selection.createRange()if (docSel.parentElement().tagName!="INPUT")returnfalse
oSel= docSel.duplicate()
oSel.text=""var srcRange= obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)var str= oSel.text+ inputStr+ srcRange.text.substr(oSel.text.length);return reg.test(str)
}</script><inputtype="text" id="txt" onkeypress= "return regInput(this,/^-$|^-0$|^-0.$|^-0.[1-5]{1}$|^0$/,String.fromCharCode(event.keyCode))"><inputtype="button" value="test" onclick="test()"></body></html>
[/Quote]
.需要转义,否则可以匹配任何单字符。
BeenZ 2009-10-20
  • 打赏
  • 举报
回复
每次输入你都要判断的话

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<script>
function regInput(obj, reg, inputStr) {
var docSel = document.selection.createRange()
if (docSel.parentElement().tagName != "INPUT") return false
oSel = docSel.duplicate()
oSel.text = ""
var srcRange = obj.createTextRange()
oSel.setEndPoint("StartToStart", srcRange)
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
return reg.test(str)
}
</script>
<input type="text" id="txt" onkeypress = "return regInput(this,/^-$|^-0$|^-0.$|^-0.[1-5]{1}$|^0$/,String.fromCharCode(event.keyCode))">

<input type="button" value="test" onclick="test()">

</body>
</html>

James__Zhan 2009-10-20
  • 打赏
  • 举报
回复
搂主的问题有意思,既然是你要判断每个输入的时候,控件的动作,就必须判断每种可能性。给你个解决方案。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<script>
function regInput(obj, reg, inputStr) {
var docSel = document.selection.createRange();
if (docSel.parentElement().tagName != "INPUT") return false;
oSel = docSel.duplicate();
oSel.text = "";
var srcRange = obj.createTextRange();
oSel.setEndPoint("StartToStart", srcRange);
var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
return reg.test(str);
}

function test(){
var str=document.getElementById("txt").value
var reg=/^-0\.[1-5]{1}|0$/;
alert(reg.test(str))
}

</script>
<input type="text" id="txt" onkeypress="return regInput(this, /^(-|-0|-0\.|-0\.[1-5]{1}|0)$/, String.fromCharCode(event.keyCode))">

<input type="button" value="test" onclick="test()">

</body>
</html>

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧