如何在Javascript中使用正则表达式来验证数字
How to use regular expression to verify a number in Javascript
/^[0-9]''s[0-9]/[0-9]$|^[0-9]/[00-9]$| ^[0-9]$|^[00-9],[0-9]$|^[0-90]。[0-9]$/.test("1 1")为true。为什么?我只希望以下类型的字符串在上面的检查中返回true:"1 1/2"1/2"1,2"1.2"1"
此外,我需要允许½个字符。它不是3个字符,而是1个。它有瑞典语键盘。
此外,我在asp.net文本框的onchange事件中检查了这一点。若返回false,我不希望页面回发并调用textbox的textchanged事件的事件处理程序。为此,我使用了event.prventDefault(),但它不起作用。下面是文本框的标记。
<asp:TextBox ID="gvtxtQty" CssClass="qty_input" runat="server" BackColor="#f4f6f7" Width="100px"
Text='<%# Eval("Qty")%>' OnTextChanged="gvtxtQty_TextChanged"></asp:TextBox>
我在下面的文本框中注册了更改事件。
$(".qty_input").change(function (e) { fnVerifyQuantity(e, this) });
函数fnVerifyQuantity如下:
function fnVerifyQuantity(e,o) {
var bol = /^[0-9]'s[0-9]'/[0-9]$|^[0-9]'/[0-9]$|^[0-9]$|^[0-9],[0-9]$|^[0-9].[0-9]$/;
//var bol = /[0-9]'s[0-9]'/[0-9]/;
var tf = bol.test(o.value);
if(tf=="false") e.preventDefault();
请帮忙。
1/您的第一个regepx返回true,因为您忘记了转义最后一部分中的点:^[0-9]。[0-9]$应为^[0-9]。[0-9]$
2/对于½字符,它是unicode。如果您不能可靠地使用regexp来匹配它,我建议您首先"规范化"您的值,然后使用更简单的regexp。
3/您在上一次测试中出错,"tf"变量是布尔值,因此不应将其与字符串进行比较,您的测试应为"if(!tf)"或"if(false==tf)"
这是您最后一个应该工作的代码的修改版本:
function fnVerifyQuantity(e,o) {
var str = o.value.trim().replace("½", ".5").replace("1/2", ".5").replace(" ", ".").replace(/[,.]+/, ".").replace(/^'./, "0.");
console.log("Aligned string: " + str);
if( !/^[0-9]('.[0-9])?$/.test(str) ) {
console.log("not conform");
e.preventDefault();
}
else {
console.log("conform");
}
}
相关文章:
- Javascript中的正则表达式验证
- javascript正则表达式验证未按预期工作
- 使用 JavaScript 正则表达式验证每个列表项一个字母的逗号列表
- 在提交时检查正则表达式验证,如果为空,则聚焦所有输入字段
- 如何使用正则表达式验证单字母域名
- Javascript正则表达式验证
- 使用javascript进行正则表达式验证
- 使用正则表达式验证特定范围
- 如何使用正则表达式验证 JavaScript 中的自定义 URL
- 使用正则表达式验证电子邮件地址
- 使用正则表达式验证网址
- 使用正则表达式验证加拿大邮政编码
- javascript 正则表达式验证列表以逗号分隔
- 使用原型进行正则表达式验证
- HTML 正则表达式验证在十进制输入上仅限制一个句点
- 用于 excel 文件上传 jQuery 的正则表达式验证代码
- 两个不同 URL 的正则表达式验证表单
- 正则表达式验证 - 域电子邮件地址
- 正则表达式验证
- 时间格式的 JavaScript 正则表达式验证问题