用于修剪用于验证名称输入的空格的正则表达式问题



检查输入的名称值是否包含名字和姓氏,中间有空格。我使用以下正则表达式,但是当存在尾随空格时遇到问题,它返回false。 如何忽略正则表达式中的尾随空格?

var nameArr = value.match(/^([^ ]{1,50})[, ]+(.{0,49}[^ ,])$/);

我解决尾随空格的方法 var nameArr = value.trim((.match(/^([^ ]{1,50}([, ]+(.{0,49}[^ ,]($/(; 除了使用修剪方法之外,还有其他方法吗?

您可以使用s*来匹配零个或多个空格。在正则表达式的末尾和开头使用它来允许前导和尾随空格:

var nameArr = value.match(/^s*([^ ]{1,50})[, ]+(.{0,49}[^ ,])s*$/);

要在匹配对象中获取"firstName lastName"或"firstName,lastName"的修剪匹配,请使用以下命令:

var nameArr=value.match(/(?=s*)(w{1,50})[, ](w{1,50})(?=s*)/);

您在正则表达式中使用了 [, ]+,如果您打算匹配"第一个、最后一个"情况(同时存在","和"(,请使用以下命令:

var nameArr=value.match(/(?=s*)w{1,50}(,s|[,s])w{1,50}(?=s*)/);

(?=模式(被称为前瞻,它们寻找指定的模式而不匹配它们,即模式应该在那里通过测试,但它不会出现在匹配的对象中。从而给了我们修剪后的名字。

最新更新