正则表达式 - +/- 符号和小数
Regular Expression - +/- sign and decimal
我正在尝试为十进制数创建一个正则表达式,同时"-"或"+"符号在开头是可选的。
有很多关于这个的信息,所以我完成了这个:
/^[+-]?'d+('.'d+)?$/
因此,我已经使用test()
功能在控制台中对此进行了测试,并且运行良好。
我的问题更多是关于在哪里进行此检查:
如果检查是
keypress
事件,我可以使用preventDefault()
来"消费"不正确的符号,但我正在像这样检索文本并且无法访问最后输入的符号 -$(event.target).val()
如果检查是
keyup
事件,我可以访问整个文本,但我无法删除不正确的符号,因为我不知道它是哪个,以及它被放在哪里(使用鼠标它可以放在有效字符串的开头或中间)
我需要检查符号的组合,而不仅仅是验证符号。例如:
- //invalid
- 1 //valid
1. //invalid
1.2 //valid
所以,我想我应该检查何时输入整个刺痛,但是,两个如何删除不正确的字符?在无效时删除整个字符串看起来不正确。
以下是一种
可能的方法,可以告诉用户在不断输入时输入是否有问题。单击此处获取示例演示。
此外,我们还可以添加一个<div>
列出允许的字符/格式。这除了让用户知道有问题之外,还会告诉他们什么构成了有效的输入。
.HTML:
<input id='ip' type='text'/>
.JS:
var regex = new RegExp(/^[+-]?'s*'d+('.'d+)?$/);
document.getElementById('ip').onkeyup = function(){
var inputVal = this.value;
if(!(regex.test(inputVal))) this.className='err';
else this.className='noerr';
}
.CSS:
.noerr{
color: green;
}
.err{
color: red;
}
注意:HTML5 具有验证输入的内置方法,并且还具有伪类(如 :invalid
和 :valid
)来执行与上述示例相同的操作。如果可以使用 HTML5,请尝试此示例。第二个输入字段是使用 HTML5 完成的(不需要 JS)。
HTML5:
<input id='iphtml5' pattern='[+-]?'s*'d+('.'d+)?' type='text' />
.CSS:
#iphtml5:valid{
color: green;
}
#iphtml5:invalid{
color: red;
}
相关文章:
- 货币代码为欧元-金额的格式不应包含小数
- 在.csv文件中写入学位符号
- 使用相同的数据集绘制各种符号
- 将带点符号的属性(有时)传递给函数
- RegEx JavaScript:数字后的符号提取
- 键按正则表达式以查找具有负值的小数
- 如何在计算器符号为零时替换它
- 将数字四舍五入到两位小数
- 删除输入中输入的符号
- 如何在ReactJs中渲染重音符号
- 如何替换JavaScript字符串中除字母和数字之外的所有内容(空格/符号)
- 插入符号到底是什么
- 删除图形和数字之间的连字符(-)符号
- 用于Javascript中小数输入的Regex,小数前有1到3位,小数后有1到三位
- 不允许在文本框中使用小数
- 浏览器intl.NumberFormat未正确显示货币符号
- JS toLocaleString始终显示货币符号,而不考虑区域设置
- 在javascript中使用小数
- 正则表达式 - +/- 符号和小数
- 在Android浏览器中不允许字母或其他符号,而不是数字(0-9)或小数