使用正则表达式的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

我使用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 == '') { 
    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'
then
console.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;
}