javascript - 正则表达式:如何限制字母数字字段中的最大整数数
问题描述
我的指示是用户可以在字段中输入所有字符,除了这些:
~`!@#$%^&*()_+={}[]|\;"',<>?
最大长度为 60。
字符串中的整数不得超过 10。
例如,如果用户粘贴到输入中:
INV-123-RT-123456789-TR-123
然后正则表达式应该输出:
INV-123-RT-1234567-TR-
这是我的代码。我坚持从字符串末尾删除多余的整数。
$('.isInvoiceNumber').on("input", function(e) {
var pos = this.selectionStart;
var str = $(this).val().replace(/[\~\`\!\@\#\$\%\^\&\*\(\)_\+\=\{\}\[\]\|\\\;\"\'\,\<\>\?]/g, '').replace(/\.{2,}/g, '.');
var digits = str.replace(/[^0-9]/g,"").length;
if ( digits>10 ) {
// ??
}
var len = str.length;
$(this).val(str);
this.selectionEnd = pos - ( len-str.length );
});
--> 这里是Codepen让它变得简单: https ://codepen.io/btn-ninja/pen/vJrXbX
谢谢!
解决方案
像这样:
$('.isInvoiceNumber').on("input", function(e) {
var pos = this.selectionStart;
var str = $(this).val().replace(/[\~\`\!\@\#\$\%\^\&\*\(\)_\+\=\{\}\[\]\|\\\;\"\'\,\<\>\?]/g, '').replace(/\.{2,}/g, '.');
var digits = str.replace(/[^0-9]/g,"").length;
if ( digits>10 ) {
str = str.substring(0, 10);
}
var len = str.length;
$(this).val(str);
this.selectionEnd = pos - ( len-str.length );
});
推荐阅读
- javascript - React Router with Meteor:如何在从 OAuth 重定向后从 URL 中删除代码参数而不重新加载
- django - 使用 Django 插入 html 元素
- javascript - 选项卡不起作用....箭头键是否兼容?
- java - 方法不会覆盖或实现超类型中的方法?
- git - 混帐添加。正在添加目录中的所有内容,即使它在 gitignore 中指定
- ssis - SSIS 包 - 基于多列的计数
- rest - 哪个 HTTP 动词最适合添加/删除多对多关系?
- firebase - 登录时 React Native 应用程序崩溃
- javascript - 更改默认选择下拉外观和感觉
- c# - 如何在 Selenium 中设置 Edge 的下载文件夹?