Javascript如何允许在删除除数字以外的所有内容的脚本中使用句点
Javascript how to allow period in script that removes everything except numbers?
这是我希望允许输入句点"."的代码。现在的代码只允许数字。需要改变什么才能实现这一点?
function check(o)
{
v=o.value.replace(/^'s+|'s+$/,''); // remove any whitespace
if(o=='') {
return;
}
v=v.substr(v.length-1);
if(v.match(/'d/g)==null) {
o.value=o.value.substr(0,o.value.length-1).replace(/^'s+|'s+$/,'');
}
};
此外,您是否了解是否有更有效的方法来编写此代码?可以对它进行任何优化吗?我只是想只允许输入数字和句点。提前谢谢。
您很可能希望使用此正则表达式来匹配数字和/或句点:/('.'d)*/
来源:String.prototype.match上的MDN页面https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/match
此行修剪字符串开头或处的空白,并将其分配给v:
v=o.value.replace(/^'s+|'s+$/,'');
该行将v的最后一个符号分配回v:
v=v.substr(v.length-1);
此表达式检查最后一个符号是否不是数字:
v.match(/'d/g)==null
如果它不是一个数字,它会使o.value有它的值,但经过修剪,没有最后一个数字。
o.value=o.value.substr(0,o.value.length-1).replace(/^'s+|'s+$/,'');
如果您要问这个代码的效率,首先从代码的可读性和可支持性的角度来看,它并不高效。因为尽管函数名为"check",但除了返回检查结果外,它还做了很多不同的事情。
如果你想检查输入的最后一个非空白符号是否是数字/点,函数应该是:
function endsWithDigit(input) {
return input.trim().match(/[0-9'.]$/);
}
如果你想删除最后一个符号,如果它不是数字:
function removeNotDigit(input) {
if (!endsWithDigit(input) {
return input.replace(/.'s*$/, '');
} esle {
return input;
}
}
或者,您可以只编写最后一个函数而不进行显式检查:
function removeNotDigin(input) {
return input.replce(/[0-9'.]'s*$/, '');
}
相关文章:
- 使用regex的jquery keydown绑定不会验证撇号和句点
- 我们如何使用css或JavaScript在i/j上更改句点(点)的颜色
- JavaScript从字符串中删除尾随空格和句点
- 下划线用句点扩展.旋转引号被删除,如何用引号获得它
- javascript或css:如何隐藏后面跟着句点前缀的任何数字"1.文本”"2.文本“"
- 如何提取与前面带句点(.)的同一字符串匹配的字符串?(仅使用正则表达式)
- 如何在 javascript 中使用正则表达式提取句点 (.) 之后的字符串
- 什么'这个代码只允许数字和句点,这是错误的
- 基于jquery中id(其值中有句点)属性的访问值..
- Regex表示用句点分隔的3个3位数的值
- 如何用逗号和句点分隔JavaScript字符串
- javascript是否有一个选项可以使句点与任何字符匹配,包括换行符
- 在节点快速路由中使用句点时获取 403
- SQL查询-替换字段名称中的句点
- 在访问对象属性时,括号表示法比句点表示法慢
- 电子邮件正则表达式不会验证句点后的部分
- 在 Greasemonkey 脚本中 – 点击事件不会在 Firefox 中触发
- 如何删除句点和前一个单词之间的空格
- 咕噜声:带有句点的位置 URL 应用
- Javascript如何允许在删除除数字以外的所有内容的脚本中使用句点