jQuery中的正则表达式字段验证
在jQuery中,是否有一个函数/插件可以用来匹配字符串中给定的正则表达式 例如,在一个电子邮件输入框中,我得到一个电子邮件地址,并想看看它的格式是否正确。我应该使用什么jQuery函数来查看验证正则表达式是否与输入匹配jQuery中的正则表达式字段验证,jquery,regex,Jquery,Regex,在jQuery中,是否有一个函数/插件可以用来匹配字符串中给定的正则表达式 例如,在一个电子邮件输入框中,我得到一个电子邮件地址,并想看看它的格式是否正确。我应该使用什么jQuery函数来查看验证正则表达式是否与输入匹配 我在谷歌上搜索了一个解决方案,但没有找到任何解决方案。我相信这可以解决问题: 它为URL和电子邮件地址等内容提供了内置模式,我认为您也可以使用自己的模式。除非您正在寻找特定的内容,否则您可以使用带字符串的常规Javascript进行正则表达式匹配 例如,您可以通过以下方式使用
我在谷歌上搜索了一个解决方案,但没有找到任何解决方案。我相信这可以解决问题:
它为URL和电子邮件地址等内容提供了内置模式,我认为您也可以使用自己的模式。除非您正在寻找特定的内容,否则您可以使用带字符串的常规Javascript进行正则表达式匹配 例如,您可以通过以下方式使用字符串进行匹配
var phrase = "This is a phrase";
phrase = phrase.replace(/is/i, "is not");
alert(phrase);
除了常规的正则表达式匹配之外,您还需要什么吗?如果您想基于正则表达式搜索某些元素,可以使用
过滤器
函数。例如,假设您希望确保在所有输入框中,用户只输入了数字,那么让我们查找所有不匹配的输入并突出显示它们
$("input:text")
.filter(function() {
return this.value.match(/[^\d]/);
})
.addClass("inputError")
;
当然,如果只是这样,您可以使用表单验证插件,但是这种方法可以应用于您喜欢的任何类型的元素。另一个例子显示了我的意思:查找其id
匹配/[a-z]+\d+/
$("[id]").filter(function() {
return this.id.match(/[a-z]+_\d+/);
});
我正在使用jQuery和JavaScript,它对我来说很好:
var rege = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
if(rege.test($('#uemail').val())){ //do something }
我的代码:
$("input.numeric").keypress(function(e) { /* pour les champs qui ne prennent que du numeric en entrée */
var key = e.charCode || e.keyCode || 0;
var keychar = String.fromCharCode(key);
/*alert("keychar:"+keychar + " \n charCode:" + e.charCode + " \n key:" +key);*/
if ( ((key == 8 || key == 9 || key == 46 || key == 35 || key == 36 || (key >= 37 && key <= 40)) && e.charCode==0) /* backspace, end, begin, top, bottom, right, left, del, tab */
|| (key >= 48 && key <= 57) ) { /* 0-9 */
return;
} else {
e.preventDefault();
}
});
$(“input.numeric”).keypress(函数(e){/*pour les champs qui ne prennent que du numeric en entrée*/
var key=e.charCode | | e.keyCode | | 0;
var keychar=String.fromCharCode(key);
/*警报(“keychar:+keychar+”\n charCode:+e.charCode+”\n key:+key)*/
如果((key==8 | | key==9 | | | key==46 | | key==35 | | | key==36 | |)(key>=37&&key=48&&key来自jquery.validate.js(joern),由Scott Gonzalez提供:
如果您使用的是MVC Razor,请确保将@
/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i
想吃意大利面条吗?一个简单的例子:
$('#some_input_id').attr('oninput',
"this.value=this.value.replace(/[^0-9A-Za-z\s_-]/g,'');")
这意味着所有与正则表达式不匹配的东西都将化为乌有,也就是说,'
,但是一般正则表达式匹配呢?可能类似于在某些文本中搜索正则表达式等。我的意思是,你可以一直直接使用javascript的正则表达式,如果你只需要这么做的话……是我,还是JQUERY有一个糟糕的网站?我看不懂找到如何使用或下载这个东西。您的示例将返回“this not is a phrase”!:-)有趣的提示-我从未实际运行过代码,但您是对的-它匹配第一个“is”,它实际上位于单词“this”的末尾-因为它忽略了字符串的其余部分,所以它对第二个“is”不做任何事情。非常有趣:)-1............好吧,只是开玩笑,我实际上对你的答案投了更高的票:)稍加一点,你的电子邮件地址中没有“+”:var rege=/^([a-Za-z0-9\+\.])+\@([a-Za-z0-9\\.])([a-Za z]{2,4}$/;我不是说我的是完美的,我只是说你的不适合我的电子邮件:-)这个问题的标题有点误导人。它可能更适合表示这与表单输入值匹配有关。我给nickf的答案加了+1,因为这正是我想要的。这不是使用正则表达式
$('#some_input_id').attr('oninput',
"this.value=this.value.replace(/[^0-9A-Za-z\s_-]/g,'');")