用正则表达式阻止用户输入
Block user from input with regex
我有一个函数,检查输入框与一个regex字符串的最大值。三个字加两个空格
$('input.words_input__input_field').on("keyup", function(e) {
if (e.keyCode == 13) {
send_message();
}
var re = /^(((['''-'+'s]'s*[a-zA-Z])?[a-zA-Z]*)){3}$/g;
var str = $('input.words_input__input_field').val();
var m;
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
send_text = str;
// View your result using the m-variable.
// eg m[0] etc.
}
console.log(m);
});
当Regex应用于输入值时,send_text将不再被编辑。但我想阻止用户在输入框中输入更多内容。
是否有办法为输入创建一个块,以便用户不能输入超过"允许"的正则表达式?
编辑:我对这个正则表达式有一些问题,所以它的工作太完美了,它应该只阻止用户在输入字段中输入三个单词和两个空格。我有一个这样的代码:
var test = /^(((['''-'+'s]'s*[a-zA-Z])?[a-zA-Z]*)){3}$/g;
if (test.test($(this).val())) {
$(".input").val($(".input").val().replace(/'s/g, ""));
}
但是它"杀死"了所有的空格。我只想删除末尾的空格。什么好主意吗?
用
设置输入为disabled$('input.words_input__input_field').prop('disabled', true);
或者将.val()
存储在变量或数据对象中,只要它有效,如果不再满足正则表达式,则从那里重新生成它。
下面的代码将允许用户键入3个以逗号分隔的单词。如果添加了违反正则表达式的任何内容,则输入将被重置为最后一个值。
var p;
var f;
$(".inp").on('keyup',function(e){
var k = e.which;
var i = $(".inp").val();
if(k != 8 && k != 46){ // allow backspace and delete
if(i.search(/^[A-Za-z]+ [A-Za-z]+ [A-Za-z]+$/) >= 0){
f = true;
p = i;
}
else{
if(f){
$(".inp").val(p);
}
}
}
});
<input type="text" class="inp">
小提琴
相关文章:
- 使用javascript搜索具有用户输入的数组
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- 如何使用JavaScript中的用户输入创建序列/序列
- 如何在用户输入时实例化数组
- 如何从客户端的数组中获取用户输入和返回值
- 如何在用户输入 javascript 时更改值
- 如何从多个不同的html页面获得mongodb文档的用户输入
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 如果用户输入的长度小于最小长度,则显示错误消息
- 随机生成用户输入
- 如果图像标记是用javascript编写的,并且需要用户输入,那么图像不会随页面加载吗
- Javascript:使用用户输入搜索数组
- 根据用户输入的数字生成文本框
- 如何通过获取用户输入和使用按钮来运行JavaScript函数
- 使用用户输入修改链接
- 如何解决取消抖动的用户输入上的竞争条件
- 从用户输入中制作数组动画,如打字机(javascript)
- 如何在视图中保存用户输入内容,并在离开页面时对控制器进行后期调用