用于数字验证的表达式
Reg Expression for number validation
我需要有文本区(或输入),允许负号,百分号和十进制数。即3000,-3.5,50%,-50.5% -都有效。
我找到了这个例子,并将正则表达式调整为
/^['-]?[0-9]+'.?[0-9]*[%]{0,1}$/
我的问题是我不能在输入数字之前加上负号。
我的代码是:$(function() {
var pastValue, pastSelectionStart, pastSelectionEnd;
$("textarea.aaa").on("keydown", function() {
pastValue = this.value;
pastSelectionStart = this.selectionStart;
pastSelectionEnd = this.selectionEnd;
}).on("input propertychange", function() {
var regex = /^['-]?[0-9]+'.?[0-9]*[%]{0,1}$/;
if (this.value.length > 0 && !regex.test(this.value)) {
this.value = pastValue;
this.selectionStart = pastSelectionStart;
this.selectionEnd = pastSelectionEnd;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="myText" class="aaa" /></textarea>
在代码片段中使用的正则表达式也允许负号。用户只能在开始时添加一次负号。你也可以在keydown事件上使用它,而不需要只在onsubmit上使用它。请检查代码片段以获得更多的理解。
$(function() {
var pastValue, pastSelectionStart, pastSelectionEnd;
$("textarea.aaa").on("keydown", function() {
pastValue = this.value;
pastSelectionStart = this.selectionStart;
pastSelectionEnd = this.selectionEnd;
}).on("input propertychange", function() {
var regex = /^-?'d*'.?'d{0,6}$/;
if (this.value.length > 0 && !regex.test(this.value)) {
this.value = pastValue;
this.selectionStart = pastSelectionStart;
this.selectionEnd = pastSelectionEnd;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="myText" class="aaa" /></textarea>
这里的问题是,您的regex强制要求至少有一个数字,因此当您键入-
时,它会失败。
要使其工作,使数字部分可选,并使-
也可选(-?
语法):
var regex = /^-?([0-9]+'.?[0-9]*%?)?$/;
// ^^
// ^ ^^
请注意,现在的问题是,仅由-
组成的字符串将传递正则表达式。
一起:
$(function() {
var pastValue, pastSelectionStart, pastSelectionEnd;
$("textarea.aaa").on("keydown", function() {
pastValue = this.value;
pastSelectionStart = this.selectionStart;
pastSelectionEnd = this.selectionEnd;
}).on("input propertychange", function() {
var regex = /^-?(?:[0-9]+'.?[0-9]*%?)?$/;
if (this.value.length > 0 && !regex.test(this.value)) {
this.value = pastValue;
this.selectionStart = pastSelectionStart;
this.selectionEnd = pastSelectionEnd;
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="myText" class="aaa" /></textarea>
相关文章:
- Javascript中的正则表达式验证
- javascript正则表达式验证未按预期工作
- 使用 JavaScript 正则表达式验证每个列表项一个字母的逗号列表
- 在提交时检查正则表达式验证,如果为空,则聚焦所有输入字段
- 如何使用正则表达式验证单字母域名
- Javascript正则表达式验证
- 使用javascript进行正则表达式验证
- 使用正则表达式验证特定范围
- 如何使用正则表达式验证 JavaScript 中的自定义 URL
- 使用正则表达式验证电子邮件地址
- 节点.js表达式验证器ERR_EMPTY_RESPONSE
- 使用正则表达式验证网址
- 使用正则表达式验证加拿大邮政编码
- javascript 正则表达式验证列表以逗号分隔
- 使用原型进行正则表达式验证
- HTML 正则表达式验证在十进制输入上仅限制一个句点
- 用于 excel 文件上传 jQuery 的正则表达式验证代码
- 两个不同 URL 的正则表达式验证表单
- 正则表达式验证 - 域电子邮件地址
- 正则表达式验证