Javascript 正则表达式无法正确输入
我有一个用于逗号分隔字母表的正则表达式,允许尾随逗号和空格Javascript 正则表达式无法正确输入,javascript,regex,Javascript,Regex,我有一个用于逗号分隔字母表的正则表达式,允许尾随逗号和空格 var rgx = /^[a-z\sA-Z]+(,[a-z\sA-Z]+)*,\s$/; return rgx.test(inputStr); 当我给两个或更多的空格之后,它就失败了 name, fname lname, 当我更正与正则表达式匹配的输入时,它也失败了 name, fname lname, 所以基本上,每当正则表达式失败时,即使我纠正了输入,正则表达式也与输入不匹配,不允许我进一步移动
var rgx = /^[a-z\sA-Z]+(,[a-z\sA-Z]+)*,\s$/;
return rgx.test(inputStr);
当我给两个或更多的空格之后,它就失败了
name, fname lname,
当我更正与正则表达式匹配的输入时,它也失败了
name, fname lname,
所以基本上,每当正则表达式失败时,即使我纠正了输入,正则表达式也与输入不匹配,不允许我进一步移动
,\s$
只匹配输入结束前逗号后的一个空格。末尾的两个空格将导致它失败
要解决这个问题,请尝试
/^[a-z\sA-Z]+(,[a-z\sA-Z]+)*,\s+$/
如果希望结尾的逗号和空格是可选的,请尝试
/^[a-z\sA-Z]+(,[a-z\sA-Z]+)*(?:,\s*)?$/
不过我有点不清楚你想在这里做什么
这个正则表达式除了在开头和相邻处不允许使用逗号外没有什么作用。谢谢@Mike,但我的问题是,每当我输入不需要的输入时,正则表达式都会工作,但一旦输入错误,即使在我根据正则表达式更正输入后,它也总是失败。简而言之:-一旦失败,在重新加载window@rohitj,你能提供一个简短的可运行的例子吗?这个(/^[a-z\sA-z]+(,[a-z\sA-z]+)*(?:,\s*)?$/)正则表达式有效,你能解释你的正则表达式和我的正则表达式的区别吗。我不清楚哪一部分不适用于我的,而现在适用于你的正则表达式。。非常感谢@Mike提供的解决方案。。。