我们正在开发一个表单验证代码段,其中jQuery masking插件已用于强制验证用户输入。
与邮政编码字段一起使用的屏蔽模式是 99999?-9999 ,其中所有内容在"?"之后是可选的。
当用户使用chrome中的自动填充功能填充表单时出现问题[即。双击输入字段并选择值]并提交表单。在表单提交时,邮政编码值为 23455 -____ ,其中包括屏蔽模式字符,即hypen&下划线。
使用自动填充功能后,请参阅附带的屏幕截图。 http://inft.ly/3mmtNdA
如果可选字符包含Hypen( - )和下划线(_),则需要在将其提交给服务器之前将其删除。我正在尝试使用正则表达式,但没有找到任何在第5个索引项后检查特定字符的内容,然后删除它们。
任何帮助都会非常有用。
答案 0 :(得分:2)
由于前五个字符是数字,因此可以捕获捕获组中的字符。检查这些是否后跟( - )或(_)并替换它们。
您可以使用以下正则表达式执行此操作:
str.replace(/(\d{5})[\-_](.*)/, '$1$2');
首先创建一个捕获组以保存前五位数(\d{5})
。然后,您将查找要删除的字符[\-_]
。之后,您将捕获字符串(.*)
的其余部分。
现在,您可以使用捕获组'$1$2'
替换字符串,然后就完成了。
答案 1 :(得分:1)
您可以简单地从字符串中删除尾部下划线或短划线,如下所示:
var str = '12345-_____';
str.replace(/[-_]+$/, ''); // "12345"
var str = '12345-123__';
str.replace(/[-_]+$/, ''); // "12345-123"