Jquery 按字符串中的位置限制接受的字符
Jquery limit accepted characters by place in string
我基本上是在尝试强制一个字段只接受特定的字符串格式。
$jq('input#id').bind('keyup', function(){
var sanitized = $jq(this).val().replace(/[^0-9a-z]/g,'');
$jq(this).val('WO'+sanitized);
在当前示例中,我强制第一个字符为 WO
,然后添加有效字符(有效为 numbers/letters)。
基于这个想法,我想知道是否有办法执行以下操作:
强制前 5 位只能是数字,后 5 位只能是字母?
如果您需要一个正则表达式来检查前 5 个字符是否为数字,而后五个字符是否为英文字母,您可以使用一个简单的正则表达式:
var re = /^\d{5}.*[a-zA-Z]{5}$/;
^
将确保我们从字符串的开头开始检查,\d{5}
匹配 5 个数字,.*
匹配除换行符以外的任何字符,[a-zA-Z]{5}
正好匹配字符串结尾前的 5 个英文字母 $
.
见demo
var sanitized = "12345some textqwert";
if (sanitized.match(/^\d{5}.*[a-zA-Z]{5}$/))
alert("Valid");
else
alert("Invalid");
sanitized = "1234some textqwert";
if (sanitized.match(/^\d{5}.*[a-zA-Z]{5}$/))
alert("Valid");
else
alert("Invalid");
这是一种方法...
$(function() {
$('input').on('keypress', function(e) {
var char = String.fromCharCode(e.which);
var caret = $(this).caret();
// var caret = this.selectionStart; // Not supported in IE <= 8 (but who cares...)
if((caret < 5 && !/^\d$/.test(char)) ||
(caret >= 5 && !/^[a-zA-Z]$/.test(char))) {e.preventDefault()}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://apache.hvitahusid.is/jslib/jquery.caret-1.5.2.min.js"></script>
<input type="text" maxlength="10" />
我基本上是在尝试强制一个字段只接受特定的字符串格式。
$jq('input#id').bind('keyup', function(){
var sanitized = $jq(this).val().replace(/[^0-9a-z]/g,'');
$jq(this).val('WO'+sanitized);
在当前示例中,我强制第一个字符为 WO
,然后添加有效字符(有效为 numbers/letters)。
基于这个想法,我想知道是否有办法执行以下操作:
强制前 5 位只能是数字,后 5 位只能是字母?
如果您需要一个正则表达式来检查前 5 个字符是否为数字,而后五个字符是否为英文字母,您可以使用一个简单的正则表达式:
var re = /^\d{5}.*[a-zA-Z]{5}$/;
^
将确保我们从字符串的开头开始检查,\d{5}
匹配 5 个数字,.*
匹配除换行符以外的任何字符,[a-zA-Z]{5}
正好匹配字符串结尾前的 5 个英文字母 $
.
见demo
var sanitized = "12345some textqwert";
if (sanitized.match(/^\d{5}.*[a-zA-Z]{5}$/))
alert("Valid");
else
alert("Invalid");
sanitized = "1234some textqwert";
if (sanitized.match(/^\d{5}.*[a-zA-Z]{5}$/))
alert("Valid");
else
alert("Invalid");
这是一种方法...
$(function() {
$('input').on('keypress', function(e) {
var char = String.fromCharCode(e.which);
var caret = $(this).caret();
// var caret = this.selectionStart; // Not supported in IE <= 8 (but who cares...)
if((caret < 5 && !/^\d$/.test(char)) ||
(caret >= 5 && !/^[a-zA-Z]$/.test(char))) {e.preventDefault()}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://apache.hvitahusid.is/jslib/jquery.caret-1.5.2.min.js"></script>
<input type="text" maxlength="10" />