Javascript替换方法对我不起作用?

Javascript替换方法对我不起作用?,javascript,Javascript,我在下面给出的代码对我不起作用?如何解决这个问题 下面是给定的代码。 函数名验证(){ var name=document.getElementById(“txtName”).value; var status=document.getElementById(“状态”); var regEx=/^([a-zA-Z]+\s)*+[a-zA-Z]+$/; 如果(名称==“”){ status.innerHTML=“请输入名称”; }如果(!regEx.test(名称)){ status.inner

我在下面给出的代码对我不起作用?如何解决这个问题

下面是给定的代码。

函数名验证(){
var name=document.getElementById(“txtName”).value;
var status=document.getElementById(“状态”);
var regEx=/^([a-zA-Z]+\s)*+[a-zA-Z]+$/;
如果(名称==“”){
status.innerHTML=“请输入名称”;
}如果(!regEx.test(名称)){
status.innerHTML=“请输入有效输入”;
name=name.replace(//[^a-z]/gi,”);//此代码对我不起作用如何修复此问题它不替换
}否则{
status.innerHTML=“看起来不错!”;
}
}

全名

首先,将
regEx
变量更正为
regEx
,然后删除
*
星号字符或以下
+
字符,因为您无法同时定义
*
+
*
表示您需要零个或多个字符,
+
表示您需要至少一个或多个字符。 使用
*
时,则
John
John Smith
John Adam Smith
有效。 当您使用
+
时,则
约翰·斯密
约翰·亚当·斯密
是有效的,但不仅仅是
约翰

如果要替换输入值,必须先引用元素,然后再引用其
属性

函数名验证(){
var elem=document.getElementById(“txtName”);
变量名称=元素值;
var status=document.getElementById(“状态”);
var regex=/^([a-zA-Z]+\s)*[a-zA-Z]+$/;
如果(名称==“”){
status.innerHTML=“请输入名称”;
}如果(!regex.test(名称)){
status.innerHTML=“请输入有效输入”;
elem.value=name.replace(//[^a-z]/gi,”);//此代码对我不起作用如何修复此问题它不会被替换
}否则{
status.innerHTML=“看起来不错!”;
}
}

全名

您的代码有两处错误:

1-声明一个名为regEx(大写E)的变量,而不是在else if子句中使用regEx

2-您的正则表达式无效,因为您无法在“*”之后链接“+”

它就是这样工作的(检查您的实际正则表达式打算测试什么):

函数名验证(){
var name=document.getElementById(“txtName”).value;
var status=document.getElementById(“状态”);
var regex=/^([a-zA-Z]+\s)*[a-zA-Z]+$/;
如果(名称==“”){
status.innerHTML=“请输入名称”;
}如果(!regex.test(名称)){
status.innerHTML=“请输入有效输入”;
name=name.replace(//[^a-z]/gi,”);//此代码对我不起作用如何修复此问题它不替换
}否则{
status.innerHTML=“看起来不错!”;
}
}

全名

当你说“不起作用”时,你的意思是name没有你想要的值,还是txtName元素的值没有更新?我希望当我放置任何其他文本(如0-9)时,它应该被null或空格替换。是的,我理解你的正则表达式的用途,但是如果你认为它会取代输入的内容,那就不是这样了。我想知道你是否注意你的名字,如果它也不好。我已经更正了我的代码。但它仍然不能像我想要的那样工作。只需输入字母表以外的任何其他值。但仍然需要0-9个符号。我不希望名称中包含数字和符号。替换方法不适用于我。您的正则表达式仍然无效,并抛出错误;试试我在评论中添加的代码,它可以工作,不允许数字或符号!