使用正则表达式的Javascript函数
我使用reg ex创建了一个函数来验证JavaScript中的字段。我的职能是使用正则表达式的Javascript函数,javascript,regex,Javascript,Regex,我使用reg ex创建了一个函数来验证JavaScript中的字段。我的职能是 //FIRST NAME VALIDATION var strFilter = /^[A-Za-z]*$/; var fname = document.getElementById('fname'); fname = fname.value.replace(/^\s+|\s+$/g,''); if ( ( !strFilter.test(fname.value) ) || fname == '') { a
//FIRST NAME VALIDATION
var strFilter = /^[A-Za-z]*$/;
var fname = document.getElementById('fname');
fname = fname.value.replace(/^\s+|\s+$/g,'');
if ( ( !strFilter.test(fname.value) ) || fname == '') {
alert("Please enter a valid first name\r\n (only characters)");
document.getElementById('fname').style.background = '#DFE32D';
document.getElementById('fname').focus();
document.getElementById('fname').value = '';
return false;
}
函数的问题是,它将
stackoverflow234232
也视为true。我只想限制字符。我想你的问题出在这一行-
if ((!strFilter.test(fname.value)) || fname == '') {
应该是——
if ((!strFilter.test(fname) ) || fname == '') {
当您到达if语句时,fname
是一个字符串变量,因此fname.value
返回undefined
,对test
的调用无效。请尝试
var strFilter=/^[A-Za-z]*$/;
var fname=$(“#fname”);
fname.val(fname.val().replace(/^\s+|\s+$/g,');
if((!strFilter.test(fname.val())| | fname==“”){
警报(“请输入有效的名字\r\n(仅限字符)”;
$('fname').css('background-color','DFE32D');
$('fname').focus();
$('fname').val('');
返回false;
}
/^[A-Za-z]*$/.test(“stackoverflow234232”)
为我生成false
。From:“认为某人的名字只能包含某些字符的代码是愚蠢的、冒犯性的和错误的。”/^[A-Za-z]*$/.test(“stackoverflow234232”)实际上返回false。同意这两个评论,对我来说都有效,但当“Rene”时会发生什么试图输入她的名字。如果它返回false,我将不在这里提问。。。。我可以给你看一个活生生的例子<代码>http://www.oxfordmontessori.com/register-user.php。访问链接输入名字。。。这是该字段的js…两者之间有什么区别。因为我认为在这两种情况下,它都有价值……@Rahul不,它没有。您可以在前一行中设置fname
字符串。在此之后,您无法访问原始HTMLElement。@Rahul,如果您有var hello='hello'
thenconsole.log(hello)
将返回“hello”,但console.log(hello.value)
将返回未定义
,因为hello没有值
属性。即使fname
以文本框对象开始,它也会被转换为此行的字符串fname=fname.value.replace(/^\s+\s+$/g',)代码>OP没有说他正在使用jQuery。但是,您可以链接$(“#fname”)
调用。
<!-- FIRST NAME VALIDATION -->
var strFilter = /^[A-Za-z]*$/;
var fname = $('#fname');
fname.val(fname.val().replace(/^\s+|\s+$/g,''));
if ( ( !strFilter.test(fname.val()) ) || fname == '') {
alert("Please enter a valid first name\r\n (only characters)");
$('#fname').css('background-color','#DFE32D');
$('#fname').focus();
$('#fname').val('');
return false;
}